6
这是如何工作的?当运行以下内容时,会打印两次"hi from class"
。红宝石内部发生了什么事情,使其表现如此?我不是其实做一个实例方法类class Class - instance与类方法
class Class
def foo
puts "hi from class"
end
end
Class.foo
x = Class.new
x.foo
这是如何工作的?当运行以下内容时,会打印两次"hi from class"
。红宝石内部发生了什么事情,使其表现如此?我不是其实做一个实例方法类class Class - instance与类方法
class Class
def foo
puts "hi from class"
end
end
Class.foo
x = Class.new
x.foo
我不知道你是否已经意识到这一点,但是当你做class Class ... end
,你不创建一个新的类名为Class
,你”重新开放现有班级Class
。
由于Class
是所有类都是实例的类,这意味着Class
是它自己的一个实例。正因为如此,你可以直接在Class
上调用任何实例方法Class
,就像你在任何其他类上的方式一样。
那么当(在'class Class'体内)发生了什么''def self.foo; “来自**自己的**”**;结束;'...现在语句'Class.foo'打印'hi从自己'? – slindsey3000
@ slindsey3000:如果你在'Class'中定义了一个实例方法和一个类方法,那么'Class.foo'将调用类方法,'AnyOtherClass.foo'将调用实例方法。所以在你的例子中,'Class.foo'将会打印'hi from ** self **',例如'String.foo'将会打印'hi from class'。 – sepp2k