将一个字符串与多个其他字符串进行比较有什么更好的语法?

时间:2010-07-07 20:07:15

标签: ruby

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

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

有什么想法吗?

4 个答案:

答案 0 :(得分:9)

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

do_something if %w(first second third).include? my_string

答案 1 :(得分:0)

do_something() if ['first', 'second', 'third'].include? my_string

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

require 'set'
SPECIAL_VALUES = Set["first", "second", "third"]

def foo(my_string)
  do_something if SPECIAL_VALUES.include?(my_string)
end

如果您希望处理“第一个”,“第二个”等案例的方式有所不同,那么您可以使用Hash代替Set