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

时间:2010-03-10 05:03:23

标签: ruby-on-rails ruby

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

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

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

3 个答案:

答案 0 :(得分:5)

有许多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

答案 1 :(得分:5)

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

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

答案 2 :(得分:4)

试试这个:

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

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