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
。