新手问题请见谅。我正在尝试在 ruby 中创建一个二维数组,并将其所有值初始化为 1。我的代码可以很好地创建二维数组,但无法修改其任何值。
谁能解释我做错了什么?
def mda(width,height)
#make a two dimensional array
a = Array.new(width)
a.map! { Array.new(height) }
#init all its values to 1
a.each do |row|
row.each do |column|
column = 1
end
end
return a
end
它的线row.each do |column|
变量column
是值的副本row
。您不能以这种方式编辑其值。你必须这样做:
def mda(width,height)
a = Array.new(width)
a.map! { Array.new(height) }
a.each do |row|
row.map!{1}
end
return a
end
或更好:
def mda(width,height)
a = Array.new(width)
a.map! { Array.new(height) }
a.map do |row|
row.map!{1}
end
end
或更好:
def mda(width,height)
a = Array.new(width){ Array.new(height) }
a.map do |row|
row.map!{1}
end
end
或更好:
def mda(width,height)
Array.new(width) { Array.new(height){1} }
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)