1006得票6回答
class << self idiom in Ruby

class &lt;&lt; self在Ruby中的作用是什么?

86得票3回答
为什么特异类(eigenclass)看起来和self.class很相似,但却不等同?

我好像错过了某些信息,请你为我解释一下。 为什么对象的特殊类(eigenclass)和self.class不同呢?class Foo def initialize(symbol) eigenclass = class &lt;&lt; self self end...

14得票4回答
Ruby类方法与特有类中的方法相比如何?

类方法和该类的特殊类(也称元类或eigenclass)中的方法是定义一个东西的两种方式吗? 如果不是,它们有什么区别?class X # class method def self.a "a" end # eigenclass method class &lt;...

13得票3回答
能否在Ruby中获取所有的特 eigenclass?

在 Ruby 中获取所有模块的列表很容易:ObjectSpace.each_object(Module).to_a 然而,是否有可能获取所有特异类(也称为单例类或元类)的列表?或者特异类是不可见的? 我尝试过:str = "foo" my_metaclass = class &lt;&lt;...

10得票1回答
如何找到私有的单例方法

我定义了一个称为 Vehicle 的模块,就像这样:module Vehicle class &lt;&lt;self def build end private def background end end end 调用Vehicle.si...

9得票2回答
为什么一个模块的单例方法在混入后的下游特异类中不可见?

我了解常规的方法查找路径,即类、超类/模块,一直到BasicObject。我认为这对于链的单件版本也是正确的,但当您在元链中混入一个模块时,似乎并非如此。在下面的例子中,当我将Automobile模块包含在Vehicle的特有类中时,调用了Automobile模块的banner方法而不是其单件...

9得票3回答
从元类中确定类

在Ruby中,获取类Foo的特异类非常简单。 eigenclass = class &lt;&lt; Foo; self; end #=&gt; #&lt;Class:Foo&gt; eigenclass = Foo.singleton_class #2.1.0 #=&gt; #&lt;Cl...

8得票2回答
为什么在Ruby中学习元编程和特殊类很重要?

我目前正在尝试 Ruby 和 Rails,其中在教程和书籍中遇到了一些关于元编程的部分。很多人提到它是 Ruby 的一个必不可少的组成部分,但他们并没有详细解释。似乎元编程是 Ruby 程序员的最后一块领地。作为一个 .NET 背景下的程序员,我很难理解为什么它被认为是如此有用。 使用元编...

7得票3回答
我为什么能够使用内核单例方法如 `puts`?

在Ruby中,puts方法是Kernel模块的单例方法。 通常情况下,当一个模块被其他模块include或extend时,该模块(但不包括其单例类)会被添加到继承树中。这样实际上将该模块的实例方法可用于该模块或它的单例类(对于include和extend分别处理)......但混合模块的单例...