Rubyで配列や列挙可能オブジェクトに対して、条件をちょうど1つだけ満たすかどうかを判定したい場合、`Enumerable#one?`メソッドを使うと便利です。この記事では、`one?`の基本的な使い方と実例を解説します。
`one?`メソッドの基本
`one?`はブロックを受け取り、そのブロックがtrueを返す要素がちょうど1つの場合にtrueを返します。それ以外の場合はfalseを返します。
構文例:
array.one? { |element| 条件 }
具体例
例1: 配列の中に1つだけ偶数があるか確認する
numbers = [1, 3, 4, 7]
numbers.one? { |n| n.even? } #=> true
例2: 条件を満たす要素が複数ある場合
numbers = [2, 4, 6]
numbers.one? { |n| n.even? } #=> false
例3: 条件を満たす要素がない場合
numbers = [1, 3, 5]
numbers.one? { |n| n.even? } #=> false
ブロックなしでの使用
ブロックを渡さずに使う場合は、truthyな要素がちょうど1つあるかどうかを判定します。
arr = [nil, false, 1]
arr.one? #=> true
まとめ
Rubyの`one?`メソッドを使えば、配列やEnumerableの中で条件をちょうど1つだけ満たす要素があるかを簡単に判定できます。ブロックを渡す方法とブロックなしの方法を状況に応じて使い分けましょう。


コメント