我正在研究Ruby,尝试建立一个以块为参数的方法.我知道你这样做是通过给出一个&前缀的最后一个参数,但是一旦它被传递,我该如何验证呢?
例如,如果我想验证参数是否为字符串,我可以使用is_a?(String).但是,如何验证我收到的是一个接受1个参数的块?还是2?
您可以使用该Proc#arity方法检查块接受的参数数量:
def foo(&block)
puts block.arity
end
foo { } # => 0
foo { |a| } # => 1
foo { |a, b| } # => 2
Run Code Online (Sandbox Code Playgroud)
从文档:
返回不会被忽略的参数数.如果声明该块不带参数,则返回0.如果已知该块正好取n个参数,则返回n.如果块具有可选参数,则返回-n-1,其中n是必需参数的数量.没有参数声明的proc与声明||的块相同 作为其论点.
| 归档时间: |
|
| 查看次数: |
845 次 |
| 最近记录: |