Ruby 未绑定方法:是否可以强制绑定到其他类的实例?

2024-05-14

我想知道我是否可以强迫这种情况发生

class A
  def bomb ; "bomb" ; end
end

class B ; end

bomb = A.instance_method(:bomb)

b = B.new
bomb.bind(b)

目前它抛出错误 TypeError: bind argument must be an instance of A

我发现我可以用这些未绑定的方法做的事情非常有限,可能性有点有限。在这样的情况下(我不仅仅指幂等函数),这是有意义的,对吗?如果我要处理 A 中未在 B 中复制的变量,执行错误就足够了。我真的很想知道如何强制此绑定。


您无法将一个类的实例与另一个类的方法绑定。 除非实例是该类或其子类的对象。

这也是显而易见的,一个类的细节不能转移到另一类的实例。它只能与被授权携带该信息的实例(即该类或其子类的实例)绑定。

因此,Ruby 还通过不将特定类的方法绑定到另一个类的实例来维护封装。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 未绑定方法:是否可以强制绑定到其他类的实例? 的相关文章

随机推荐