class Class - 实例与类方法

sli*_*000 6 ruby

这是如何工作的?运行以下"hi from class"内容时打印两次.在ruby里面发生了什么让这个行为像这样?我实际上并不是为类创建实例方法

class Class
  def foo
    puts "hi from class" 
  end
end

Class.foo
x = Class.new
x.foo
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 9

我不知道你是否意识到这一点,但是当你这样做时class Class ... end,你并没有创建一个名为的新类Class,而是重新打开现有的类Class.

因为Class类是所有类都是实例,这意味着它Class本身就是一个实例.因此,您可以在任何其他类ClassClass以相同的方式直接调用任何实例方法.