2012-06-27 41 views
1

我創建了一個名爲SpecialArray的類,我想定製輸出irb顯示的輸出類型。目前,當我創建該類的新實例時,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應該只顯示輸出?

SOLUTION:

這是我最終創建的方法。

def inspect 
    output.inspect 
end 

回答

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 
+0

聰明!謝謝! –

+0

如果它對你有幫助,如果你接受答案會很好。 –

+1

對不起。以爲我有......現在被接受爲答案。 –