Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby*args语法错误_Ruby_Syntax Error_Args - Fatal编程技术网

ruby*args语法错误

ruby*args语法错误,ruby,syntax-error,args,Ruby,Syntax Error,Args,我发现了这种我想理解的奇怪。如果我在pry中定义这两种方法 def test(*args) puts args end def test=(*args) puts args end 但如果我将上述代码放在一个模块中,并将该模块包含在另一个类中(例如,类作业),则 j=Job.last j.test=(1,2,3) 抛出以下错误 SyntaxError: (irb):3: syntax error, unexpected ',', expecting ')' j.test=(1,

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

def test(*args)
   puts args
end
def test=(*args)
    puts args
end
但如果我将上述代码放在一个模块中,并将该模块包含在另一个类中(例如,类作业),则

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
直接使用

j.test = 1,2,3

或`


好的,我已经看到了如何使用它,但是为什么“test=”可以从pry命令行工作,而不能从模块中的with工作呢?这是ruby中的错误,还是我的一些基本误解?我告诉过你:ruby解释器的解析。在Ruby bug report站点上投诉,上面给出了“未定义的方法`test=”for#”,请尝试j.methods.include?(:test=)。
j.test= ([1,2,3])
j.send('test=',[1,2,3])