这是如何工作的?运行以下内容时,"hi from class"
将打印两次。在ruby里面发生了什么让这个行为像这样?我实际上不是为类
class Class
def foo
puts "hi from class"
end
end
Class.foo
x = Class.new
x.foo
答案 0 :(得分:9)
我不知道您是否意识到这一点,但当您执行class Class ... end
时,您没有创建名为Class
的新类,而是重新打开现有的类{{ 1}}。
由于Class
是所有类都是实例的类,因此Class
是其自身的实例。因此,您可以直接在Class
上调用Class
的任何实例方法,就像在任何其他类上一样。