Ruby 特定类的IRB静音输出

Ruby 特定类的IRB静音输出,ruby,Ruby,我正在使用一个类,其中包含大型实例数组 每当我像这样初始化一个类,例如I=Image.new,我都会从数组中得到大量垃圾输出(@r,@g,@b-~300k个值) 问题是,我如何使输出静音(所有结果都保存到一个文件中,从未在控制台中查看)或使初始值设定项不检查self。我想返回self,因为我想堆叠方法,例如image.load('file').binary.grayscale.save(:bin)这类问题的常见解决方法是只添加;IRB中的nil,例如i=Image.new;无。这样,最后计算的表

我正在使用一个类,其中包含大型实例数组

每当我像这样初始化一个类,例如
I=Image.new
,我都会从数组中得到大量垃圾输出(
@r
@g
@b
-~300k个值)


问题是,我如何使输出静音(所有结果都保存到一个文件中,从未在控制台中查看)或使初始值设定项不检查self。我想返回
self
,因为我想堆叠方法,例如
image.load('file').binary.grayscale.save(:bin)
这类问题的常见解决方法是只添加
;IRB中的nil
,例如
i=Image.new;无
。这样,最后计算的表达式是
nil
,也将返回该表达式

>> Foo.new 
=> #<Foo:0x00000000e3b9d0 @a=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>
>> Foo.new ; nil 
=> nil
>Foo.new
=> #
>>富新;无
=>零

如果将Foo.new的返回值更改为不返回新的Foo对象,则永远无法将新的Foo分配给任何变量。如果唯一的问题是偶尔滚动console视图,请使用“nil”方法。

您看到的输出是对象的
(或
检查
)的结果。您可以为类定义/覆盖
(或
inspect
)以减少输出。例如

irb(main):001:0> class Foo
irb(main):002:1>   def initialize
irb(main):003:2>     @a = @b = @c = @d = 42
irb(main):004:2>   end
irb(main):005:1>
irb(main):006:1*   def to_s
irb(main):007:2>     'a Foo object'
irb(main):008:2>   end
irb(main):009:1> end
=> nil
irb(main):010:0> h = Foo.new
=> a Foo object
irb(main):011:0>
关于
/
检查
:irb调用
检查
,通常只调用
(请参阅)。因此,将
定义为
应该正常工作。但是,如果类(或其祖先)中有一个
inspect
未调用
,则必须覆盖该
inspect

禁用irb回显:

conf.echo = false

gem将为您提供命令
quiet
verbose
,以禁用/启用输出(以及更多)。

我宁愿对类进行更改,因为我每次都必须在控制台中键入该命令。但有趣的把戏,我必须记住我不知道,但它完全有道理。谢谢,这正是我想要的,但是,我没有得到你想要的结果。覆盖to_-s功能似乎没有任何效果:@AllanNørgaard:请尝试定义
inspect
。类似的问题(但目标略有不同)
conf.echo = false