-1

Ruby 1.9.2 を使用しています。たとえば、私はクラスを持っています:

class Test
  def ==(param)
    # some process
  end

  def bar(param)
    puts "foo bar #{param}"
  end
end

次を使用してbarメソッドを呼び出すことができます。

Test.new.instance_eval{ bar 'celona' }

しかし、ブロックのように==メソッドを実行することはできません

Test.new.instance_eval{ == "foo" }

構文エラー、予期しない tEQが発生しました

4

2 に答える 2

0

以下は私のために働いた:

class Test
  def ==(param)
    p "You put #{param}"
  end
end

Test.new.instance_eval{|a|  a == "foo" }
=> "You put foo"

ソリューションは、ユースケースによって異なります。

編集クラスをインスタンス化するときも同じことが言えます。

b = Test.new
b == "foo"
=> "You put foo"

使用することもできますself

Test.new.instance_eval{self == "foo" }

理由は完全にはわかりませんが、==メソッドには明示的な呼び出し先が必要であり、推論できないと思いますself

于 2012-04-27T09:26:55.810 に答える
0

あなたが試すことができます :

Test.new.send("==", "foo")
于 2012-04-27T09:27:12.260 に答える