类“自我”是什么意思?

关于:

class Test
  class << self
    def hi
      puts "Hi there"
    end
end

我在脑海中形成了如下图像:

由于Ruby中的所有东西都是对象,所以类本身就是Class对象。 通过调用class << self您可以从Test内部打开Class定义并注入少量实例方法。 由于TestClass一个实例,因此您可以像调用对象上的实例方法一样调用这些方法: Test.hi

以下是有助于可视化我的上一句话的伪代码:

class Class
    def hi
        puts “Hi there”
    end
end

Test = Class.new(class Test
end)
Test.hi

我是否正确?


假设我们有一个类A的对象obj 。 在这一点上, obj的类的祖先层次是:

[A, ...]

什么class << obj; ... end class << obj; ... end意思是它创建一个只有实例为obj的类B ,并将其放入obj的祖先层次结构中,以便obj类的祖先层次结构变为:

[B, A, ...]

如果你写的class << self; ... end class << self; ... endTest的上下文中class << self; ... end ,那么它的主体将是一个其唯一实例是Test 。 如果您在该体内定义了一个实例方法hi ,那么它将应用于该类的实例,即Test 。 因此,你将能够做Test.hi

链接地址: http://www.djcxy.com/p/69507.html

上一篇: What does class << self mean?

下一篇: Simple do while loop using while(true);