我发现了我想了解的这个怪异之处。如果我在 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)
所以,在模块内部,一个用“=”定义的方法总是需要一个参数。这对我来说没有意义。
我错过了什么
最佳答案
Ruby 解释器的解析。尝试
j.send :test=, 1, 2, 3
关于ruby *args 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318980/