【发布时间】:2012-08-10 02:38:03
【问题描述】:
为什么两段代码没有打印相同的内容。我打算让第一件产生第二件的输出
a=Array.new(5,Array.new(3))
for i in (0...a[0].length)
a[0][i]=2
end
p a
# 这将打印 [[2, 2, 2], [2, 2, 2], [2, 2, 2], [2, 2, 2], [2, 2, 2]]*
a=Array.new(5).map{|d|d=Array.new(3)}
for i in (0...a[0].length)
a[0][i]=2
end
p a
# 打印 [[2, 2, 2], [nil, nil, nil], [nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]
【问题讨论】:
-
无需在您的区块中分配给
d。它应该是...map{|d| Array.new(3)}。 -
@meagar:根本不需要
|d|... -
您能否解释一下您对
Array::new的文档准确地 不清楚的地方?这样,Ruby 开发人员可以改进文档,以便未来的开发人员不会像您一样陷入同样的陷阱。请帮助让世界变得更美好!
标签: ruby