ruby - 方法可变参数(如*options)之后的参数,不可以设置默认值吗?

浏览:29日期:2022-10-16

问题描述

譬如:

def calculate(*numbers, method = {:add=>true})

就一直报错:

syntax error, unexpected ’=’, expecting ’)’ (SyntaxError)

检索The Ruby Programming Wikibook 的相关语法也没有提示,请问这是什么原因呢?

问题解答

回答1:

假设你是解释器,你会把 calculate({add: true}) 中的参数 {add: true} 分配给 *numbers 呢,还是 method 呢?

完全判断不了对不对?所以是不允许的。

回答2:

这种*numbers 的可变参数,难道不是只能在最后么?

def calc(method = {add: true}, *numbers); end 是允许的,反过来就不行了。

回答3:

不允许,会有歧义

相关文章: