5

6 つの異なる値のみを含むことができる文字列変数があります。最初の 4 つの値のいずれかまたは 2 秒の値のいずれかが含まれているかどうかを確認したい。

これよりもエレガントな方法はありますか:

if string.eql? 'val1' || string.eql? 'val2' || string.eql? 'val3' || string.eql? 'val4'
  ...
elsif string.eql? 'val5' || string.eql? 'val6'
  ...
end

多分何かのようなif string is in ['val1', 'val2', 'val3', 'val4']

4

3 に答える 3

17

使用できますinclude?

if ['val1', 'val2', 'val3', 'val4'].include?(string)
于 2013-07-08T12:40:02.637 に答える
1
case string
when *%w[val1 val2 val3 val4]
  ...
else
  ...
end
于 2013-07-08T12:49:30.007 に答える
0

Array#index

オブジェクトが obj に == であるような ary の最初のオブジェクトのインデックスを返します。一致するものが見つからない場合は nil を返します。

puts "something" if ['val1', 'val2', 'val3', 'val4'].index("val1")
# >> something
于 2013-07-08T12:42:46.433 に答える