ruby * args语法错误

时间:2012-09-07 13:22:44

标签: ruby syntax-error args

我发现这种古怪,我想了解。如果我在pry中定义这两个方法......

def test(*args)
   puts args
end
def test=(*args)
    puts args
end

他们都工作。但是如果我将上面的代码放在一个模块中并将该模块包含在另一个类(比如,类Job)中,则以下

j=Job.last
j.test=(1,2,3)

引发以下错误......

SyntaxError: (irb):3: syntax error, unexpected ',', expecting ')'
j.test=(1,2,3)
          ^

以下工作符合预期......

j.test=[1,2,3]
j.test=(1)

所以,看起来在模块内部,用'='定义的方法总是需要一个arg。这对我没有意义。

我缺少什么

2 个答案:

答案 0 :(得分:2)

解析Ruby解释器。尝试

j.send :test=, 1, 2, 3

答案 1 :(得分:2)

直接使用

j.test = 1,2,3

j.test= ([1,2,3])

或`

j.send('test=',[1,2,3])