ruby – 特定类的IRB静音输出

ruby – 特定类的IRB静音输出,第1张

概述我正在使用一个包含大型实例数组的类. 每当我初始化这样的类时,例如i = Image.new,我的数组得到了很多垃圾输出(@ r,@ g,@ b – 每个300k的值). class Image def initialize(width=640, height=480, brightness=64) @width, @height, @brightness = width, he 我正在使用一个包含大型实例数组的类.

每当我初始化这样的类时,例如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 Fooirb(main):002:1>   def initializeirb(main):003:2>     @a = @b = @c = @d = 42irb(main):004:2>   endirb(main):005:1>irb(main):006:1*   def to_sirb(main):007:2>     'a Foo object'irb(main):008:2>   endirb(main):009:1> end=> nilirb(main):010:0> h = Foo.new=> a Foo objectirb(main):011:0>

关于to_s / inspect:irb调用通常只调用to_s的inspect(参见ruby-doc).因此,定义to_s通常应该有效.但是,如果检查没有在类(或其祖先)中调用to_s,则必须覆盖此检查.

总结

以上是内存溢出为你收集整理的ruby – 特定类的IRB静音输出全部内容,希望文章能够帮你解决ruby – 特定类的IRB静音输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存