代码之家  ›  专栏  ›  技术社区  ›  vonconrad

将一个变量与Ruby中的两个不同值进行比较

  •  4
  • vonconrad  · 技术社区  · 15 年前

    这更像是一个语义问题。

    我想检查一个变量是否是两个值之一。最简单的方法是:

    if var == "foo" || var == "bar"
    # or
    if var == 3     || var == 5
    

    但我觉得这不太干。我知道我可以用 String.match() 但这对非字符串变量不起作用,速度慢了三倍。

    是否有更好的方法根据两个值检查变量?

    3 回复  |  直到 15 年前
        1
  •  14
  •   bryantsai    15 年前

    将所有值放入一个数组中,然后应该很容易。

    %w[foo bar].include?('foo') # => true
    
    [3,5].include?(3) # => true
    
        2
  •  5
  •   Aidan Cully    15 年前

    这个 case 这句话似乎符合你的要求。

    case var
      when "foo", "bar" then case1()
    end
    
    case var
      when 3, 5 then case2()
    end
    

    基于数组的方法似乎要慢于此。

        3
  •  1
  •   Brian Campbell Dennis Williamson    15 年前

    你可以这样做:

    %W(foo bar baz).include? var
    

    或:

    [3, 5].include? var