1

複数の値を同じ変数と比較するためのRubyの適切な構文はありますか? 例えば:

#!/usr/bin/ruby -w

y = 15
p 'success' if y == 1 || y == 5 || y == -2 || y == 15132 || y == 3.14159265  || y == 15

それは次の行に沿って何かとして書くことができますか:

y = 15
p 'success' if y == 1,5,-2,15132,3.14159265,15

もしそうなら、それはwhileループにも当てはまりますか?

y = 15
while y != 1,5,-2,15132,3.14159265,15
y = rand(50)
p y
end

私の検索に基づいて、これは不可能であるか、私の検索にはあいまいすぎると信じる傾向があります。

2例目であることを願っています。

私はすでに配列反復ソリューションを検討しましたが、それは私が望むほどきれいでも単純でもありません。

4

5 に答える 5

3
case y
when 1, 5, -2, 15132, 3.14159265, 15 then p "success"
end
于 2013-05-01T19:50:31.917 に答える
3

あなたが探していますinclude?

p 'success' if [1,5,-2,15132,3.14159265,15].include? y
于 2013-05-01T19:46:14.507 に答える
3
p 'success' if [1, 5, -2, 15132, 3.14159265, 15].include? y
于 2013-05-01T19:46:21.740 に答える
1

より一般的なケースでは、any? を使用できます。比較ブロックを使用するメソッド。これには、== 以外の演算子で使用できるという利点があります。

p 'success' if [1, 5, -2, 15132, 3.14159265, 15].any? { |i| i == y }
于 2013-05-01T20:29:51.963 に答える
0

からArray#index:

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

p 'success' if [1,5,-2,15132,3.14159265,15].index(y)
于 2013-05-01T20:14:10.960 に答える