我正在使用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
答案 0 :(得分: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
答案 1 :(得分:0)
您可以尝试:
Test.new.send("==", "foo")