Inscrutable Ruby: пример присвоения вектора

Примите во внимание следующее:

a=[0,1] #our starting value
a=[a,1] #=> [[0,1],1] as expected

Я ожидаю, что следующий результат даст тот же результат:

a=[0,1] #same starting place
a[0]=a  #should make a the same thing as it was above, right?
a       #=> [[...],1]   !!!

В первом примере второе присваивание относится к значению a до того, как было выполнено назначение. Во втором примере второе присваивание выполняет рекурсивное присваивание. Мне кажется, что это другое поведение. Согласовано ли такое поведение на самом деле? Если да, то может кто-нибудь, пожалуйста, объясните, почему?

7
задан JnBrymn 28 January 2011 в 17:41
поделиться