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