suautotest 发表于 2011-05-19 10:35

如何获取调用函数传递的参数个数啊?

定义了一个函数,需要2个参数,

def my(arg1,arg2)
...
end
,那么怎么判断调用函数传递的参数有几个?
也就是要下面的效果:
def my(arg1,arg2)
if 参数个数 == 0
   ...
elsif 参数个数 == 1
...
else
...
end

riwuyou 发表于 2011-05-19 10:41

这个函数怎么看不懂呢?

suautotest 发表于 2011-05-19 10:55

不是吧?
我承认我是菜鸟,不过,这个函数难道有问题?
def my(arg1,arg2)
if 参数个数 == 0
   ...
elsif 参数个数 == 1
...
else
...
end

我的意思就是说,当调用者给的参数个数为0个时(即:my())如何如何,当参数个数为1个时(即:my(xxx))如何如何,否则如何如何,难道这样不可以?

zhlong8 发表于 2011-05-19 11:14

可变参数用
def my *args
    if args.size == 0

bugbugbug3 发表于 2011-05-19 12:05

可用Method#arity来取得方法的参数个数

举例:def x(a,b,c)
p method(:x).arity
end

x(1,2,3)

suautotest 发表于 2011-05-19 12:37

谢谢,貌似没法解决我的问题,还是谢谢了

bugbugbug3 发表于 2011-05-19 13:09

恩 arity 只能取得方法的参数个数,但是不能取得动态传递的参数个数。

zhlong8 说的可变参数 是正确的解决方案。

2gua 发表于 2011-05-19 19:57

讨论得很热烈呢。

i_love_ruby 发表于 2012-03-26 15:17

def x(*)
p "this is a test!"
end
x(1,2,3,4,5,6,7,8)
这样的如何测试他的参数呢?

i_love_ruby 发表于 2012-03-26 15:26

回复 5# bugbugbug3


def x(*)
p "this is a test!"
end
x(1,2,3,4,5,6,7, 8 )
这样的如何测试他的参数呢?
页: [1] 2
查看完整版本: 如何获取调用函数传递的参数个数啊?