关于多维数组的Ruby练习说,访问多维数组的内部元素需要两个each
方法实例。以下内容:
x = [[1,2],[3,4],[5,6]]
x.each do |a|
a.each do |b|
puts b
end
end
应该返回:
# 1
# 2
# 3
# 4
# 5
# 6
但是,没有必要使用两种each
方法。如果我只是做
x.each { |a| puts a }
我得到了相同的结果。似乎each
的单个实例已经进入多维数组的内部层。
在这种情况下,我将如何访问第一级?换句话说,我将如何获得以下内容?
# [1,2]
# [3,4]
# [5,6]
答案 0 :(得分:3)
Ruby中有三种不同的打印功能。让我们在Ruby提示符下尝试它们:
> puts [1,2]
1
2
=> nil
> p [1,2]
[1, 2]
=> [1, 2]
> print [1,2]
[1, 2]=> nil
如果您不熟悉irb
,胖箭头=>
后面的表达式是语句的返回值。
答案 1 :(得分:1)
此外,如果你这样做
puts x
你会得到完全相同的结果。这是因为puts
以特殊方式处理数组。它枚举所有元素并单独调用它们puts
。 (这是递归的,正如你可能想象的那样)。
这将大致得到您想要的输出:
x.each {|a| p a}
或
x.each {|a| puts a.inspect }
输出
# >> [1, 2]
# >> [3, 4]
# >> [5, 6]
答案 2 :(得分:0)
x.each { |a| puts a }
这将调用放在x数组的每个元素上。
与做:
相同puts [1,2]
puts [3,4]
puts [5,6]
加上一个数组会像你看到的那样格式化它。