赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
Ruby 1.9 支持带缺省值的参数出现在不带缺省值的参数之前,而 Ruby 1.8 及其它很多支持参数缺省值的语言都要求带缺省值的参数只能出现在列表最后。
- def foo(a = 0, b)
- p a+b
- end
- p foo(2) # => 2
- p foo(1, 2) # => 3
复制代码 当然,带缺省值的参数必须挨在一起,如下情况是不合语法的:- def bar(a, b = nil, c, d = nil, e)
- p [ a, b, c, d, e ]
- end
复制代码 这可能是由于 Ruby 解释器使用的 LR(1) 解析器不能轻易处理这种情况。
带缺省值参数和可变长度参数列表可以混用,但前者必须出现在后者之前:- def foo(a = 0, *args)
- p [a, args]
- end
- foo(5, 6, 7, 8) # => [5, [6, 7, 8]]
- foo() # => [0, []]
复制代码 |
|