Ruby:调用方法列表,直到返回true

是否有一种很好的方法可以在ruby中进行一系列方法调用UNTIL返回true?

这是我的第一个想法,但我想可能有更好的方法:

if method_one elsif method_two elsif method_three else puts "none worked" end 

你可以使用Enumerable#any吗? 同样。

 [ :m1, :m2, :m3 ].any?{ |method| object.send( method )} || "None Worked" 

有许多Ruby-ish选项。 一个有趣的是:

 method_one || method_two || method_three || Proc.new { puts "none worked" }.call 

要么

 method_one || method_two || method_three || lambda { puts "none worked" }.call 

试试这个:

 [:m1, :m2, :m3, ...].find{ |m| send(m) } != nil || "none worked" 

如果其中一个方法返回true则返回true否则返回none worked