ruby块中的参数数量

Nic*_*las 4 ruby lambda

我是Ruby的新手,但不是那种允许lambda的语言,比如groovy.所以我看到了这个例子:

myArray.product(otherArray).reject{|i,j| i > j}
Run Code Online (Sandbox Code Playgroud)

在ruby代码块中,我之前没有看过这个块有2个参数,但是当我去查看文档时,我只能看到文档说它需要1个参数.我在enumerable课堂上看了同样的东西,但是那个doc也只显示了1个参数.

我知道它有效,我想我希望有一种更简单的方法来确定除了猜测和测试方法之外需要多少个参数.如何判断一个块在Ruby中有多少参数?

Mic*_*ley 9

这是有效的,因为Ruby支持解构.

解构允许您将一组变量绑定到相应的值集合,您通常可以将值绑定到单个变量.

这允许以下内容成立:

arr = [1, 2]
x = arr
x == [1, 2] # true

y, z = arr
y == 1 # true
z == 2 # true
Run Code Online (Sandbox Code Playgroud)

您可以从以下代码中看到,块的参数中的解构对于采用块的内置方法不是唯一的:

def my_method(arr)
  yield arr
end

my_method([1, 2, 3]) {|x| puts x.inspect }
# => [1, 2, 3]
my_method([1, 2, 3]) {|x, y, z| puts x.inspect }
# => 1
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请查看使用Ruby进行解构.