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