我是Ruby语言的新手,最近一直在玩它。但是,当我试图删除2D数组的最后两行时:
array2d = [["a", "b", "c"],[0],[3, 2, 1],[0],[5,6,7]]
Ruby以某种方式为我删除了第二行。当我尝试将第二行中的零存储为字符串时:
array2d = [["a", "b", "c"],["0"],[3, 2, 1],[0],[5,6,7]]
Ruby不会删除“零行”。
Ruby是否有任何特殊的机制处理零? Ruby认为数组为“0”整数为空吗? 这是我写的整个代码:
array2d = [["a", "b", "c"],[0],[3, 2, 1],[0],[5,6,7]]
array2d.each do |row|
print "["
row.each do |cell|
print cell.to_s + ","
end
puts "]"
end
last=4
last.downto(3) do |i|
row = array2d[i]
row.each_with_index do |cell, j|
puts "array2d[" + i.to_s + "][" + j.to_s + "] = " + cell.to_s
end
array2d.delete(row)
end
array2d.each do |row|
print "["
row.each do |cell|
print cell.to_s + ","
end
puts "]"
end
答案 0 :(得分:0)
您正在调用array2d.delete([0])
。这会删除[0]
的所有个实例。 Ruby无法判断您要删除哪一个以及哪个不删除,尤其是因为您甚至没有尝试删除第一个实例。 Ruby如何知道您只想删除 last 实例?
如果要从多维数组中删除行,请将行的索引与delete_at
一起使用。
last = 4
last.downto(3) do |i|
# ...
array2d.delete_at(i)
end