免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9959 | 回复: 11

如何获取调用函数传递的参数个数啊? [复制链接]

论坛徽章:
0
发表于 2011-05-19 10:35 |显示全部楼层
定义了一个函数,需要2个参数,

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

论坛徽章:
0
发表于 2011-05-19 10:41 |显示全部楼层
这个函数怎么看不懂呢?

论坛徽章:
0
发表于 2011-05-19 10:55 |显示全部楼层
不是吧?
我承认我是菜鸟,不过,这个函数难道有问题?
def my(arg1,arg2)
if 参数个数 == 0
   ...
elsif 参数个数 == 1
  ...
else
  ...
end

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

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
发表于 2011-05-19 11:14 |显示全部楼层
可变参数用
def my *args
    if args.size == 0

论坛徽章:
0
发表于 2011-05-19 12:05 |显示全部楼层
可用Method#arity来取得方法的参数个数

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

  4. x(1,2,3)
复制代码

论坛徽章:
0
发表于 2011-05-19 12:37 |显示全部楼层
谢谢,貌似没法解决我的问题,还是谢谢了

论坛徽章:
0
发表于 2011-05-19 13:09 |显示全部楼层
恩 arity 只能取得方法的参数个数,但是不能取得动态传递的参数个数。

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

论坛徽章:
0
发表于 2011-05-19 19:57 |显示全部楼层
讨论得很热烈呢。

论坛徽章:
0
发表于 2012-03-26 15:17 |显示全部楼层
def x(*)
  p "this is a test!"
end
x(1,2,3,4,5,6,7,
这样的如何测试他的参数呢?

论坛徽章:
0
发表于 2012-03-26 15:26 |显示全部楼层
回复 5# bugbugbug3


def x(*)
  p "this is a test!"
end
x(1,2,3,4,5,6,7, 8 )
这样的如何测试他的参数呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP