#和MyClass有什么区别?
问题描述:
class MyClass
def fun
puts self
end
def self.fun2
puts self
end
end
mine = MyClass.new
mine.fun
MyClass.fun2
上面的代码应该自我打印两次,在这种情况下它们都是MyClass。但是,实际输出是#<MyClass:0x10f6a82d0>和MyClass有什么区别?
#<MyClass:0x10f6a82d0>
MyClass
它们有两种不同的形式。我想知道他们是否代表不同的事情。
答
第一个结果是MyClass的实例的字符串表示形式,而第二个结果是类MyClass的字符串表示形式。
如果您制作了另一个mine2 = MyClass.new
并将其打印出来,您将在最后得到一个不同的十六进制标识符以区别于其他实例。
答
#<MyClass:0x10f6a82d0>
代表类MyClass
的一个实例。 MyClassf.fun2
返回类本身。