gpt4 book ai didi

ruby - 自定义 IRB 输出

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:52 25 4
gpt4 key购买 nike

我创建了一个名为 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

最佳答案

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

关于ruby - 自定义 IRB 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11227590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com