gpt4 book ai didi

ruby - 有没有办法知道一个方法需要多少个参数?

转载 作者:数据小太阳 更新时间:2023-10-29 06:32:46 24 4
gpt4 key购买 nike

使用 irb,我们可以通过执行以下操作列出特定对象的方法:

"Name".methods

但是如果我想知道一个特定的方法需要多少个参数,我该如何实现呢?我的意思是有没有什么办法(通过在 irb 上点击一些命令),我们可以获得特定方法的参数数量(而不是引用文档)?

.methods 仅返回方法名称,不返回方法的参数列表。

最佳答案

您可以使用方法Method#arity :

"string".method(:strip).arity
# => 0

来自 Ruby 文档:

Returns an indication of the number of arguments accepted by a method. Returns a nonnegative integer for methods that take a fixed number of arguments. For Ruby methods that take a variable number of arguments, returns -n-1, where n is the number of required arguments. For methods written in C, returns -1 if the call takes a variable number of arguments.

所以,例如:

# Variable number of arguments, one is required
def foo(a, *b); end
method(:foo).arity
# => -2

# Variable number of arguments, none required
def bar(*a); end
method(:bar).arity
# => -1

# Accepts no argument, implemented in C
"0".method(:to_f).arity
# => 0

# Variable number of arguments (0 or 1), implemented in C
"0".method(:to_i).arity
# => -1


更新 我刚刚发现Method#parameters的存在,它可能非常有用:

def foo(a, *b); end
method(:foo).parameters
# => [[:req, :a], [:rest, :b]]

关于ruby - 有没有办法知道一个方法需要多少个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17590080/

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