some_string = "i love lamp"
another_string = "i love desk"
def some_string.lovehate
if match /love/
sub /love/, "hate"
elsif match /hate/
sub /hate/, "love"
end
end
puts some_string.lovehate # => "i hate lamp"
puts another_string.respond_to? :lovehate # => false
m = some_string.method(:lovehate).unbind
m.bind(another_string).call # fails
失败
singleton method called for a different object (TypeError)
很明显,红宝石程序员认为出于某种原因这是一个坏主意。我的问题是阻止我这样做的原因是什么?
答案 0 :(得分:2)
这与UnboundMethods通常的工作方式一致。你绑定它们的对象必须是kind_of?方法来自的类。 another_string
不属于some_string
的单例类(就像其他对象一样),因此您无法绑定some_string
&#39的方法; s单身课程。