如何使 Irb 不打印对象属性

Nic*_*tti 0 ruby irb output

我希望 irb 默认不打印我的对象属性。那可能吗?例如,我有:

class Test
  @tmp = nil
  def initialize(str)
    @tmp = str
    self
  end
end
Run Code Online (Sandbox Code Playgroud)

我得到:

irb> t = Test.new("hello")
=> #<Test:0x18f6198 @tmp="hello">
Run Code Online (Sandbox Code Playgroud)

我不想看到@tmp="hello"部分。

spi*_*ann 5

IRBinspect默认调用返回值。如果您想在 IRB 中抑制或更改该输出,只需inspect在您的类中覆盖即可。

class Test
  def initialize(str)
    @tmp = str
  end

  def inspect
    '<TEST CLASS>'
  end
end

test = Test.new('foobar')
#=> <TEST CLASS>
Run Code Online (Sandbox Code Playgroud)