gpt4 book ai didi

Ruby:如何检查一个 block 接受多少个参数?

转载 作者:数据小太阳 更新时间:2023-10-29 08:17:26 26 4
gpt4 key购买 nike

我正在尝试设置一个将 block 作为参数的方法。我知道你通过给最后一个参数一个 & 前缀来做到这一点,但是一旦它被传递,我应该如何验证它?

例如,如果我想验证一个参数是一个字符串,我可以使用 is_a?(String)。但是我如何验证我收到了一个接受一个参数的 block 呢?还是 2 个?

最佳答案

您可以使用 Proc#arity 方法来检查该 block 接受了多少个参数:

def foo(&block)
puts block.arity
end

foo { } # => 0
foo { |a| } # => 1
foo { |a, b| } # => 2

来自文档:

Returns the number of arguments that would not be ignored. If the block is declared to take no arguments, returns 0. If the block is known to take exactly n arguments, returns n. If the block has optional arguments, return -n-1, where n is the number of mandatory arguments. A proc with no argument declarations is the same a block declaring || as its arguments.

关于Ruby:如何检查一个 block 接受多少个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19840420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com