来自C#世界我习惯认为类是对象的不可变定义,并且每个对象都有固定的类。
我试图让我的思想开始使用
class << some_object
def something_unique_to_this_object
# code
end
end
我不是在谈论class << self
我在谈论改变一个或几个对象的类定义,但不是像class << self
那样改变它们。
在几个月或几乎一年的时间里使用ruby我从未发现过这种情况,当我认为好的时候我可以打开这个对象eigenclass并更改它并保持同一类的大多数其他对象不变。请在使用时提供真实世界的示例。
答案 0 :(得分:2)
你说&#34;不喜欢class << self
&#34; 。好吧,猜猜是什么 - 类/模块方法正是以这种方式实现的。语法相似是有原因的。类定义中的self
指的是类本身。您定义的任何类/模块方法实际上是该类/模块的本征类的方法。您的特定类只是类Class
的一个实例。
对于其他示例,请查看类似rspec的内容。你将如何实现double并动态添加一些方法?你如何存根现有对象的方法? Eingenclasses非常适合它。
除了更多元使用之外,我有时也会在调试时发现它很舒服。就像我可以设置一个断点,改变一些对象的行为并在断点后继续看看会发生什么。您可能不希望影响该类的所有对象,或者该对象可能是匿名类的实例。