ruby *args 语法错误

标签 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)

所以,在模块内部,一个用“=”定义的方法总是需要一个参数。这对我来说没有意义。

我错过了什么

最佳答案

Ruby 解释器的解析。尝试

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

关于ruby *args 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318980/

相关文章:

ruby - 对使用符号符号进入 Ruby Hash 内部的百万种方法感到困惑

ruby - 适合 Ruby 程序员的 RPG IV 书籍?

ruby-on-rails - Rails 设计禁用某些用户类型的密码恢复

Ruby RJB 无法创建 Java VM 错误

Python *args 属性错误

java - public static int[] main (int[] ) 将返回什么以及在哪里?

r - 如何使用 `td`软件包中的 `tempdisagg`命令将每月数据分解为每日数据频率?

excel - Excel VBA中的数组

c++ - 错误 : C2059: syntax error : '{'

python - 使用 argparse 定义参数的顺序 - Python