代码之家  ›  专栏  ›  技术社区  ›  Brian Armstrong

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

  •  2
  • Brian Armstrong  · 技术社区  · 15 年前

    在Ruby中进行一系列方法调用直到返回true之前,有没有一种很好的方法?

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

    if method_one
    elsif method_two
    elsif method_three
    else
      puts "none worked"
    end
    
    3 回复  |  直到 15 年前
        1
  •  5
  •   Farrel    15 年前

    你可以用Enumerable吗?也。

    [ :m1, :m2, :m3 ].any?{ |method| object.send( method )} || "None Worked"
    
        2
  •  5
  •   Dmytrii Nagirniak    15 年前

    红宝石色选项有很多。一个有趣的是:

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

    method_one || method_two || method_three || lambda { puts "none worked" }.call
    
        3
  •  4
  •   Harish Shetty    15 年前

    试试这个:

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

    退换商品 true 如果其中一个方法返回 否则返回 none worked .

    推荐文章