我有一些类,它们有很大的示例变量。当我初始化这些类时,附加到它们的大型示例变量会沿着输出,导致输出占用了整个shell,有点烦人。有没有一种方法可以覆盖我的类在终端中返回时的输出,以避免这种情况?
eeq64g8w1#
我明白你的意思.每隔一段时间,我必须处理一个有几个屏幕打印输出的对象。当它不是单个对象时,它是一个集合。我这样做是为了防止它淹没我的屏幕
my_obj = get_a_huge_object_or_collection; nil
在这种情况下,nil成为这个表达式的值并被打印出来。但是如果你真的想永久地改变对象打印到控制台的方式,你可以重写inspect。
nil
inspect
z4iuyo4d2#
Sergio Tulentsev已经给出了如何抑制冗长输出的答案。另一个选项可能是更改该类的示例的输出方式。这可以通过定义一个自定义的inspect方法来实现。假设你有一个像这样的类Foo:
Foo
class Foo attr_accessor :bar end
你会看到这样的输出:
foo = Foo.new foo.bar = "extremely long value" foo #=> #<Foo:0x00007ffab9aaf3f0 @bar="extremely long value">
但是,当你向类中添加一个自定义的inspect方法时,你可以控制输出的样子,比如,你可以截断长属性,或者只显示最有趣的值:
class Foo attr_accessor :bar def inspect "#<Foo @bar=\"#{bar[0,8]}...\">" end end foo = Foo.new foo.bar = "extremely long value" foo #=> #<Foo @bar="extremel..."
2条答案
按热度按时间eeq64g8w1#
我明白你的意思.每隔一段时间,我必须处理一个有几个屏幕打印输出的对象。当它不是单个对象时,它是一个集合。
我这样做是为了防止它淹没我的屏幕
在这种情况下,
nil
成为这个表达式的值并被打印出来。但是如果你真的想永久地改变对象打印到控制台的方式,你可以重写
inspect
。z4iuyo4d2#
Sergio Tulentsev已经给出了如何抑制冗长输出的答案。
另一个选项可能是更改该类的示例的输出方式。这可以通过定义一个自定义的
inspect
方法来实现。假设你有一个像这样的类
Foo
:你会看到这样的输出:
但是,当你向类中添加一个自定义的
inspect
方法时,你可以控制输出的样子,比如,你可以截断长属性,或者只显示最有趣的值: