1

SpecialArrayというクラスを作成しましたが、irbが表示する出力の種類をカスタマイズしたいと思います。現在、クラスの新しいインスタンスを作成すると、irbはオブジェクト全体を返します。これは私が現在見ているものです:

1.9.3p194 :022 > SpecialArray.new([1,2,0,6,2,11]) 
=> #<UniqueArray:0x007ff05b026ec8 @input=[1, 2, 0, 6, 2, 11], @output=[1, 2, 0, 6, 11]>

ただし、出力として定義したものだけを表示したいと思います。つまり、これを見たいのです。

1.9.3p194 :022 > SpecialArray.new([1,2,0,6,2,11]) 
=> [1, 2, 0, 6, 11]

irbが出力のみを表示するように指定するにはどうすればよいですか?

解決:

これが私が作成したメソッドです。

def inspect
  output.inspect
end
4

1 に答える 1

3

IRB はObject#inspectメソッドを呼び出して、オブジェクトの文字列表現を取得します。必要なのは、このメソッドを次のようにオーバーライドすることだけです。

class Foo
  def inspect
    "foo:#{object_id}"
  end
end

次に、IRB で次を取得します。

>> Foo.new
=> foo:70250368430260 

特定のケースSpecialArray#inspectでは、基になる配列の文字列表現を返すだけです。

SpecialArray
  def inspect
    @output.inspect
  end
end
于 2012-06-27T13:45:49.027 に答える