ruby – 特定类的IRB静音输出
发布时间:2020-12-17 01:53:09 所属栏目:百科 来源:网络整理
导读:我正在使用一个包含大型实例数组的类. 每当我初始化这样的类时,例如i = Image.new,我的数组得到了很多垃圾输出(@ r,@ g,@ b – 每个300k的值). class Image def initialize(width=640,height=480,brightness=64) @width,@height,@brightness = width,height,
我正在使用一个包含大型实例数组的类.
每当我初始化这样的类时,例如i = Image.new,我的数组得到了很多垃圾输出(@ r,@ g,@ b – 每个300k的值). class Image def initialize(width=640,height=480,brightness=64) @width,@height,@brightness = width,height,brightness self.load('usart.dat') end def load(file='usart.dat') self.reset f = IO.read(file,@height * @width * 2,0) # Parsing the datafile,saving data in @r,@g,@b,@gray etc end return self end # ... More methods end 问题是,我怎样才能使输出静音(所有结果都保存到文件中,从不在控制台中查看)或者使初始化程序不检查自身.我想返回self,因为我想要堆叠方法,例如image.load( ‘文件’)binary.grayscale.save.(:BIN). 解决方法
您看到的输出是对象的to_s(或检查)的结果.您可以为类定义/覆盖to_s(或检查)以产生较少的输出.例如.
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> 关于to_s / inspect:irb调用通常只调用to_s的inspect(参见ruby-doc).因此,定义to_s通常应该有效.但是,如果检查没有在类(或其祖先)中调用to_s,则必须覆盖此检查. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |