1
class MyClass
  def fun
    puts self
  end

  def self.fun2
    puts self
  end
end

mine = MyClass.new
mine.fun
MyClass.fun2

上記のコードはselfを2回出力する必要があります。この場合、両方ともMyClassです。ただし、実際の出力は

#<MyClass:0x10f6a82d0>
MyClass

2つの異なる形式があります。それらは実際には異なるものを表しているのだろうか。

4

2 に答える 2

1

#<MyClass:0x10f6a82d0>クラスのインスタンスを表しますMyClassMyClassf.fun2クラス自体を返します。

于 2013-03-27T01:38:32.900 に答える
1

最初の結果はMyClassのインスタンスの文字列表現であり、2番目の結果はクラスMyClassの文字列表現です。

別のものを作成mine2 = MyClass.newして印刷した場合は、他のインスタンスと区別するために、最後に別の16進識別子を取得します。

于 2013-03-27T01:38:35.610 に答える