ruby – 班级<<自我意味着什么?

关于:
class Test
  class << self
    def hi
      puts "Hi there"
    end
end

我在脑海中想出了以下图片

由于一切都是Ruby中的对象,因此类本身就是类Class的对象.通过调用类<<自我从Test内部打开类定义并注入几个实例方法.由于Test是Class的一个实例,因此可以调用这些方法,就像在对象上调用实例方法一样:Test.hi. 以下是伪代码,它有助于可视化我之前的句子:

class Class
    def hi
        puts “Hi there”
    end
end

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

我做对了吗?

解决方法

假设我们有一个类A的对象obj.此时,obj类的祖先层次结构是:
[A,...]

什么类<< OBJ; ... end确实是它创建了一个B类,它的唯一实例是obj,并将它放在obj的祖先层次结构中,以便obj类的祖先层次结构变为:

[B,A,...]

如果你写类<<自; ...在Test的上下文中结束,然后它的主体将是一个其唯一实例为Test的类.如果在该主体中定义实例方法hi,则该类将应用于该类的实例,即Test.因此,你将能够做Test.hi.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...