我希望irb不要默认打印我的对象属性。那可能吗?例如,我有:
class Test
@tmp = nil
def initialize(str)
@tmp = str
self
end
end
我得到了:
irb> t = Test.new("hello")
=> #<Test:0x18f6198 @tmp="hello">
我不希望看到@tmp="hello"
部分。
答案 0 :(得分:4)
IRB默认调用inspect
返回值。如果您想在IRB中压制或更改该输出,只需覆盖您班级中的inspect
。
class Test
def initialize(str)
@tmp = str
end
def inspect
'<TEST CLASS>'
end
end
test = Test.new('foobar')
#=> <TEST CLASS>
答案 1 :(得分:1)
设置检查器字符串,如下所示:
IRB.CurrentContext.inspect_mode = IRB::Inspector.new(->obj{
"<##{obj.class}:#{obj.object_id}>"
})
然后在irb中,你会得到以下结果:
"foo"
# => <#String:47128160661240>