ruby - 获取 block 参数个数

标签 ruby methods

我需要获取给定 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/

相关文章:

java - 具有不同类型的变量参数?

ruby - 在 Ruby 中发出 http 请求时出现 OpenSSL 错误

ruby-on-rails - 如何检查是否有较新的 gem 版本?

Ruby 对象和 JSON 序列化(没有 Rails)

objective-c - 在 Swift 中调用自定义 Objective-C 方法?

java - 方括号是什么意思?在 java

ruby-on-rails - Rails3 - 为什么我的 View 加载时间这么长?

iphone - 日期时间到 NSDate

java - 如何在 Groovy 中调用一个简单的 getter 方法?

javascript - Array.some() 不是函数