2012-02-12 11 views
1

私は、一連の条件を満たす要素が配列内に存在するかどうかを教えてくれるコードを書くつもりです。Rubyの1行のコードがブロックを中断しています

は例

のために私は[1,2,3,4,5,6,7,8,9,10,11,12]を持っていると私は2と3で割り切れる最初の要素を見つけたい、私はすぐにそれが6ではなく、処理に当たったとしてtrueを返します1つのライナーを書きたいです配列の残りの要素

私はそれぞれのループとブレークにaを書くことができますが、コードの1行でこれを行う方法があるはずです。

+0

後の値を処理しません、それは6.使用#find又は#anyによって割り切れますあなたが知りたいと思っているもの(同じブロックが動作します) '[...]。find {| n | n%6 == 0} ' –

答えて

5

any?

[1,2,3,4,5,6,7,8,9,10,11,12].any?{|e| e % 2 == 0 && e % 3 == 0} 

か、all?とそれを組み合わせると素晴らしいチュートリアルの例持つことができます。

[1,2,3,4,5,6,7,8,9,10,11,12].any?{|e| [2, 3].all?{|d| e % d == 0}} 

をそして、あなたが実際に最初にマッチした要素を返す必要がある場合は、findを使用します。

[1,2,3,4,5,6,7,8,9,10,11,12].find{|e| [2,3].all?{|d| e % d == 0}} 
# => 6 
+0

?値が返されない場合は、その値が存在するかどうかをチェックするだけです。 –

+1

'any?' _returns_ boolean値。実際にOPの質問に答えます:_ –

+0

申し訳ありませんが、あなたは正しいです。 –

4

使用する必要があります:find

[1,2,3,4,5,6,7,8,9,10,11,12].find{|e| e % 2 == 0 && e % 3 == 0} 

それ6が返され、それが3と2の両方で割り切れる場合は、6

関連する問題