Ruby “each”方法是否改变了其行为?
一个关于多维数组的Ruby练习说,访问多维数组的内部元素需要Ruby “each”方法是否改变了其行为?,ruby,Ruby,一个关于多维数组的Ruby练习说,访问多维数组的内部元素需要每个方法的两个实例。以下是: 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 但是,没有必要分别使用两个方法。如果我这么做的话 x.each { |a| puts a } 我得到了同样的结果。似乎每个的一个实例已经进入多维数组的内部级别 在这种情况下,我将如何访问第一级?换
每个方法的两个实例。以下是:
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
但是,没有必要分别使用两个方法。如果我这么做的话
x.each { |a| puts a }
我得到了同样的结果。似乎每个
的一个实例已经进入多维数组的内部级别
在这种情况下,我将如何访问第一级?换句话说,我将如何获得以下内容
# [1,2]
# [3,4]
# [5,6]
Ruby中有三种不同的打印函数。让我们在Ruby提示符中尝试它们:
> puts [1,2]
1
2
=> nil
> p [1,2]
[1, 2]
=> [1, 2]
> print [1,2]
[1, 2]=> nil
如果您不熟悉irb
,则fat箭头=>
后面的表达式是语句的返回值。Ruby中有三种不同的打印函数。让我们在Ruby提示符中尝试它们:
> puts [1,2]
1
2
=> nil
> p [1,2]
[1, 2]
=> [1, 2]
> print [1,2]
[1, 2]=> nil
x.each { |a| puts a }
如果您不熟悉irb
,则fat箭头=>
后面的表达式是语句的返回值
x.each { |a| puts a }
此调用将放置在x数组的每个元素上
这与执行以下操作相同:
puts [1,2]
puts [3,4]
puts [5,6]
放置一个数组将按您看到的那样格式化它
此调用将放置在x数组的每个元素上
这与执行以下操作相同:
puts [1,2]
puts [3,4]
puts [5,6]
放置一个数组会像你看到的那样格式化它。此外,如果你只是
puts x
你会得到完全相同的结果。这是因为put
以一种特殊的方式处理数组。它枚举所有元素并调用将分别放在它们上面。(正如您可能想象的那样,这是递归的)
这将大致得到您想要的输出:
x.each {|a| p a}
或
输出
# >> [1, 2]
# >> [3, 4]
# >> [5, 6]
此外,如果你只是
puts x
你会得到完全相同的结果。这是因为put
以一种特殊的方式处理数组。它枚举所有元素并调用将分别放在它们上面。(正如您可能想象的那样,这是递归的)
这将大致得到您想要的输出:
x.each {|a| p a}
或
输出
# >> [1, 2]
# >> [3, 4]
# >> [5, 6]
哦,好的!因此,这不是关于每个
的行为,而是放置
。哦,好吧!因此,这不是关于每个
的行为,而是放置
。