加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在ruby中发出一次警告?

发布时间:2020-12-17 01:22:54 所属栏目:百科 来源:网络整理
导读:是否有可能告诉ruby只发出一次警告,而不是多次? class SoylentGreen def eat warn "Algae harvesting not implemented. Soylent green is people!" endend5.times do soylent_green = SoylentGreen.new soylent_green.eatend 产生 Algae harvesting not imp
是否有可能告诉ruby只发出一次警告,而不是多次?

class SoylentGreen
  def eat
    warn "Algae harvesting not implemented. Soylent green is people!"
  end
end

5.times do
  soylent_green = SoylentGreen.new
  soylent_green.eat
end

产生

Algae harvesting not implemented. Soylent green is people!
Algae harvesting not implemented. Soylent green is people!
Algae harvesting not implemented. Soylent green is people!
Algae harvesting not implemented. Soylent green is people!
Algae harvesting not implemented. Soylent green is people!

理想情况下,我希望它只发生一次.

我没有使用rails,并且可以访问ruby 1.8和1.9.

替代方案包括编写我自己的警告系统(它只会覆盖这样的故意警告),或者将警告放在SoylentGreen #edout之外(即使没有调用该方法也会显示它).

解决方法

根据Chaos的回答..

class SoylentGreen
  def eat
    warn_once "Algae harvesting not implemented. Soylent green is people!"
  end
  def warn_once(msg)
    @@warned||=false
    if not @@warned then
       @@warned = true
       warn msg
    end
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读