MAGAZINE
ルーターマガジン
Ruby
Rubyで配列が内包する要素の状態を判定してboolean型を返すメソッドまとめ
2019.05.22
はじめに
今日は、rubyのArrayオブジェクトからtrue,falseのboolean型を返す、メソッド群を紹介します。
メソッド紹介
・ all?
全ての要素が(ブロックに対して)trueであるか
numbers = [1,2,3,4,5]
p numbers.all?{|number| number.even?} // => false
booleans = [false,true,false,false,false]
p booleans.all? // => false
blank = []
p blank.all?{|number| number.even?} // => true
p blank.all? // => true
・ none?
全ての要素が(ブロックに対して)falseであるか
numbers = [1,2,3,4,5]
p numbers.none?{|number| number.even?} // => false
booleans = [false,true,false,false,false]
p booleans.none? // => false
blank = []
p blank.none?{|number| number.even?} // => true
p blank.none? // => true
・ any?
(ブロックに対して)trueである要素が1つ以上存在するか
numbers = [1,2,3,4,5]
p numbers.any?{|number| number.even?} // => true
booleans = [false,true,false,false,false]
p booleans.any? // => true
blank = []
p blank.any?{|number| number.even?} // => false
p blank.any? // => false
・ one?
(ブロックに対して)trueである要素が1つ存在するか
numbers = [1,2,3,4,5]
p numbers.one?{|number| number.even?} // => false
booleans = [false,true,false,false,false]
p booleans.one? // => true
blank = []
p blank.one?{|number| number.even?} // => false
p blank.one? // => false
使用例
numbers = [1,nil,3,4,5]
unless numbers.all?
puts "alert, numbers contain nil"
numbers = []
end
p numbers
万が一でも、nilが混じってしまったらそんな配列は使い物にならない!
なんて時に、こういう分岐処理を書くと綺麗になりそうですね。
まとめ
空の配列については、存在を確かめる one?
と any?
はtrue
を返し、必ず全ての要素を参照する all?
と any?
はfalse
を返すようです。要注意ですね。
他にも弊社では様々な知見を紹介していますので、是非見て行ってください。
ルーターのブログたち
CONTACT
お問い合わせ・ご依頼はこちらから