【发布时间】:2013-03-07 16:39:12
【问题描述】:
我在学习 Ruby 时注意到,每种方法的这两种用法都可以工作并产生相同的输出,我想知道 Ruby 是如何做到这一点的(以及如何在我自己的函数中做到这一点):
my_array = [["hello","goodbye"],["picture","perfect"]]
my_array.each do |array|
puts array[0] + " " + array[1]
end
my_array.each do |first, second|
puts first + " " + second
end
我的理解是,在编写接受代码块的方法的定义时,使用yield方法将参数传递给代码块并调用该代码块。但是如何利用 yield 方法,让它根据提供的代码块传递不同的参数呢?在示例情况下,当块内使用两个参数(即,第一个、第二个)时,yield 方法似乎传递了单个数组元素,而在块内使用一个参数(即,数组)时,它传递了数组本身。 )。
【问题讨论】:
-
@RoneyMichael 如果我错了,请纠正我,但我认为这不是解决方案。 splat 运算符旨在与参数一起使用,而不是与参数一起使用。我的问题是关于我如何构建我的收益语句以及我传递给它们的参数。
标签: ruby yield-keyword