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

比较一个字符串和多个其他字符串的更好语法是什么?

  •  3
  • hundredwatt  · 技术社区  · 16 年前

    我基本上在寻找一种更漂亮的写作方式:

    do_something() if my_string == 'first' | my_string == 'second' | my_string == 'third'
    

    有什么想法吗?

    4 回复  |  直到 16 年前
        1
  •  9
  •   Adrian    16 年前

    最常见的解决方案是 Array#include? :

    do_something if %w(first second third).include? my_string
    
        2
  •  0
  •   mykhal    16 年前
    do_something() if ['first', 'second', 'third'].include? my_string
    
        3
  •  0
  •   Wayne Conrad    16 年前

    do_something if my_string =~ /^(first|second|third)$/

        4
  •  0
  •   Marc-André Lafortune    16 年前

    如果您担心效率和/或易读性,我建议您首先创建一个具有良好常量名称的特殊值列表,解释这些特殊值的原因,然后像这样使用:

    require 'set'
    SPECIAL_VALUES = Set["first", "second", "third"]
    
    def foo(my_string)
      do_something if SPECIAL_VALUES.include?(my_string)
    end
    

    如果在处理“第一”、“第二”等情况的方式上存在差异,则可以使用 Hash 而不是 Set .

    推荐文章