3

私は理解したいこの奇妙さを見つけました。これら 2 つのメソッドを 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)

したがって、モジュール内では、「=」で定義されたメソッドは常に 1 つの引数を期待しているように見えます。それは私には意味がありません。

何が足りないの

4

2 に答える 2

2

Ruby インタープリターの解析。試す

j.send :test=, 1, 2, 3
于 2012-09-07T13:28:48.440 に答える
2

直接使う

j.test = 1,2,3

また

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

または `

j.send('test=',[1,2,3])  
于 2012-09-07T13:29:44.337 に答える