13

列挙型のすべての要素が特定の条件を満たすかどうかを確認するための迅速な方法は何ですか? 論理的には次のようになると思います。

elements = [e1, e2, e3, ...]
return (condition on e1) && (condition on e2) && (condition on e3) && ...

たとえば、整数の配列があり、「すべての整数は奇数ですか?」という質問に答えたいとします。

私はいつでも各値を反復処理し、それが true かどうかを確認し、そのうちの 1 つが false を返したときに false を返すことができますが、それを行うより良い方法はありますか?

4

1 に答える 1

25

all?Enumerableミックスインの関数を使用できます。

elements = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
return elements.all? { |elem| elem % 2 != 0 }

または、コメントで指摘されているように、odd?特に奇数の値を探している場合にも使用できます。

elements = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
return elements.all?(&:odd?)
于 2012-05-20T06:23:25.550 に答える