为什么会这样呢???? 作者: 电锤斧王 时间: 2012-10-21 19:27
我对ruby的数组不是很了解 其他人看看吧作者: serena718 时间: 2012-10-21 19:28
因為那個循環把b[1]重新刷新了
在push時並不會記錄到前一次的值
試試這樣,我沒測試過,不過你要的結果可能必須用到clone
a = []
b = []
b[0]=0
for i in 1..5
c = b.clone
b[1]= i
a.push(c) if i > 1
a.push(b)
p a
end作者: feizhaodan 时间: 2012-10-21 20:00
数组保存的可以算是C++里的pointer而不是那个数值。
a = 1
b = [a]
p b
a += 1
p b
复制代码
就是这么简单。作者: pigsss 时间: 2012-10-21 20:04
push的对象是引用,你对原数组b修改,那push进的所有b都会变,因为指向的都是一个对象
想要理想的效果就像楼上说的那样,但是有错 应该是:
a = []
b = []
b[0]=0
for i in 1..5
c = b.clone
c[1]= i
a.push(c)
p a
end作者: 英顺的马甲 时间: 2013-1-6 22:20