我需要获取给定 block 采用的参数数量。例如:
foobar(1,2,3) { |a, b, c|
}
def foobar(x, y, z, &block)
# need to obtain number of arguments in block
# which would be 3 in this example
end
这在 1.9 主干中是可能的,但在任何官方版本中都不是。我希望是否有任何方法可以做到这一点而无需下载单独的 gem/扩展模块。
最佳答案
当你用 & 实现一个 block 时,它就变成了一个 Proc 对象,它有一个 arity
方法。请注意 - 如果 proc 采用 *splat arg,它会返回一个的补码。
def foobar(x, y, z, &block)
p block.arity
end
(通过“The Ruby Programming Language”一书回答。)
关于ruby - 获取 block 参数个数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077673/