ruby参数语法错误



我发现了这种我想理解的奇怪之处。如果我在priry中定义这两种方法。。。

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。这对我来说没有意义。

我缺少什么

Ruby解释器的解析。尝试
j.send :test=, 1, 2, 3

直接使用

j.test = 1,2,3

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

或`

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

最新更新