В первом случае array
и ary
указывают на один и тот же объект. Затем вы изменяете этот объект, используя метод <<
. Объект, на который указывают array
и ary
, теперь изменен.
Во втором случае array
и ary
снова оба указывают на один и тот же массив. Теперь вы переназначаете переменную ary
, так что ary
теперь указывает на новый массив. Переназначение ary
однако не влияет на array
. В ruby переназначение переменной никогда не влияет на другие переменные, даже если они указывали на один и тот же объект до переназначения.
Другими словами, array
по-прежнему пуст по той же причине, что x
не будет 42 в следующем примере:
x = 23
y = x
y = 42 # Changes y, but not x
Редактировать: Чтобы добавить один массив к другому на месте, вы можете использовать метод concat
, который также должен быть быстрее, чем +=
.