Сначала я попытаюсь объяснить вывод, который вы видите.
В ruby, если у нас есть массив, например [1, 2]
и умножьте его на число n , тогда вы получите массив, повторенный n раз, например
irb(main):012:0> [1,2] * 2
=> [1, 2, 1, 2]
Итак, ваш each
цикл печатает [1, 2] * 1
, за которым следует [1, 2] * 2
Если вы спрашиваете, почему присвоение b
для строки, а затем для номера не приводит к ошибке, то это не проблема в динамически типизированных языках, таких как ruby. например,
irb(main):017:0> a = 5
=> 5
irb(main):018:0> a = 'no problem'
=> "no problem"
После того, как каждый ваш цикл b
будет просто иметь последнее значение, которое он имел в цикле, т.е. 2