作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
使用 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/
我是一名优秀的程序员,十分优秀!