是否有一种很好的方法可以在ruby中进行一系列方法调用UNTIL返回true?
这是我的第一个想法,但我认为可能有更好的方式:
if method_one
elsif method_two
elsif method_three
else
puts "none worked"
end
答案 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
。