和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返回类本身。