Есть задача. Вывести в консоль 10 раз (с новой строки) слово "Привет" и приставить к нему Восклицательный знак. На каждой итерации количество Восклицательных знаков должно увеличиваться на 1.
Пример:
Привет!
Привет!!
Привет!!!
и т.д.
Написал так:
1.upto(10) {|x| puts"Hello #{x.times { print "!"}}"}
Но получил странный результат:
!Hello1
!!Hello2
!!!Hello3
!!!!Hello4
Вопросы:
1. Почему первым выводится результат выражения x.times { print "!"}?
2. Почему выводится x, если в коде он участвует, как часть функции?
3. Возможно ли вообще написать это в одну строчку с данными методами?
Есть решение со знаком умножения
1.upto(10) {|x| puts "Hello#{"!"*x}"}
но хочется понять - почему выводятся данные в такой последовательности и со значением x.
Заранее благодарю за ответы.