api中看 arity 还是很有用的,能根据返回的数字状态,判断方法调用的传参方式!
class C
def one; end
def two(a); end
def three(*a); end
def four(a, b); end
def five(a, b, *c); end
def six(a, b, *c, &d); end
end
c = C.new
c.method(:one).arity #=> 0
c.method(:two).arity #=> 1
c.method(:three).arity #=> -1
c.method(:four).arity #=> 2
c.method(:five).arity #=> -3
c.method(:six).arity #=> -3
"cat".method(:size).arity #=> 0
"cat".method(:replace).arity #=> 1
"cat".method(:squeeze).arity #=> -1
"cat".method(:count).arity #=> -1
例子:
if @entry.method(op_method).arity == 1
flag = @entry.send(op_method,params[:ov].to_s.strip)
else
flag = @entry.send(op_method)
end