#<myclass:0x10f6a82d0>和MyClass之间有什么区别?</myclass:0x10f6a82d0>

时间:2013-03-27 01:33:43

标签: ruby self

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

有两种不同的形式。我想知道他们是否真的代表了不同的东西。

2 个答案:

答案 0 :(得分:1)

#<MyClass:0x10f6a82d0>代表类MyClass的一个实例。 MyClassf.fun2返回类本身。

答案 1 :(得分:1)

第一个结果是MyClass的实例的字符串表示,而第二个结果是MyClass类的字符串表示。

如果您创建了另一个mine2 = MyClass.new并将其打印出来,那么您最后会得到一个不同的十六进制标识符,以区别于其他实例。