我有一个数组数组,看起来像这样:
[
[[1, 3], [3, 0]],
[[0, 0], [0, 3], [3, 2], [3, 3]],
[[0, 1], [0, 2], [1, 0], [2, 0], [2, 3], [3, 1]],
[[1, 2], [2, 2]],
[[1, 1], [2, 1]]
]
我要打印每个元素。我希望得到这样的输出:
0,(1,3),(3,0)
1,(0,0),(0,3),(3,2),(3,3)
2,(0,1),(0,2),(1,0),(2,0),(2,3),(3,1)
3,(1,2),(2,2)
4,(1,1),(2,1)
这是我的代码:
for indx in 0..4
print "#{indx}"
for cell in cell_arr[indx]
print ",(#{cell[0]},#{cell[1]})"
end
if indx <= 4
puts
end
end
我得到的输出:
0,(1,3),(3,0)
1,(0,0),(0,3),(3,2),(3,3)
2,(0,1),(0,2),(1,0),(2,0),(2,3),(3,1)
3,(1,2),(2,2)
4,(1,1),(2,1)
0..4
在输出结束时,我的代码生成了一些额外的东西。
答案 0 :(得分:3)
0..4
是的的返回 如果您致电
for i in 0..100
end
返回将是
0..100
逃避这个:
for indx in 0..4
print "#{indx}"
for cell in cell_arr[indx]
print ",(#{cell[0]},#{cell[1]})"
end
if indx <= 4
puts
end
end; nil
答案 1 :(得分:0)
Enumerable#each_with_object
内的选项嵌套Enumerable#each_with_index
:
array.map.with_index { |ary, i| (ary.each_with_object ([]) { |e, tmp| tmp << "(#{e.first}, #{e.last})" }).unshift(i).join(',') }
哪个:
# 0,(1, 3),(3, 0)
# 1,(0, 0),(0, 3),(3, 2),(3, 3)
# 2,(0, 1),(0, 2),(1, 0),(2, 0),(2, 3),(3, 1)
# 3,(1, 2),(2, 2)
# 4,(1, 1),(2, 1)
sub_arry = [[0, 1], [0, 2], [1, 0], [2, 0], [2, 3], [3, 1]]
res = sub_arry.each_with_object ([]) { |e, tmp| tmp << "(#{e.first}, #{e.last})" }
res #=> ["(0, 1)", "(0, 2)", "(1, 0)", "(2, 0)", "(2, 3)", "(3, 1)"]
想法是将元素的索引放置在数组内,然后使用Array#join
构建要打印的行:
res.unshift(2).join(',')
#=> "2,(0, 1),(0, 2),(1, 0),(2, 0),(2, 3),(3, 1)"