我基本上是在寻找一种更漂亮的写作方式:
do_something() if my_string == 'first' | my_string == 'second' | my_string == 'third'
有什么想法吗?
答案 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
。