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

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的Ruby相关文章