是否有可能告诉ruby只发出一次警告,而不是多次? class SoylentGreen def eat warn "Algae harvesting not implemented. Soylent green is people!" endend5.times do soylent_green = SoylentGreen.new soylent_green.eatend 产生 Alg
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