Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby “each”方法是否改变了其行为?_Ruby - Fatal编程技术网

Ruby “each”方法是否改变了其行为?

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 } 我得到了同样的结果。似乎每个的一个实例已经进入多维数组的内部级别 在这种情况下,我将如何访问第一级?换

一个关于多维数组的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 }
我得到了同样的结果。似乎每个
的一个实例已经进入多维数组的内部级别

在这种情况下,我将如何访问第一级?换句话说,我将如何获得以下内容

# [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]

哦,好的!因此,这不是关于
每个
的行为,而是
放置
。哦,好吧!因此,这不是关于
每个
的行为,而是
放置