##はじめに
少し前にall?メソッドとinclude?メソッドを記事にしましたが、この二つを使うと配列の中に複数の要素が含まれているか確認するのにとても便利だったため、合わせ技を記事にしておきます。
↓それぞれの基本的な使い方はこちらをご確認ください。
##all?とinclude?の合わせ技
配列の中に複数の要素があるかどうかを調べる際にこの二つを組みわせるとすっきりとコードを記述することができます。
例えば、
[1, 2, 3, 4, 5]このような配列があったとして、1と3と5の全てがあるかどうかを調べたいとします。
ここでinclude?の登場ですが、include?の引数は一つしか渡せません。
もしinclude?だけでこれを実現しようとすると下記のようになります。
array = [1, 2, 3, 4, 5]
array.include?(1) && array.include?(3) && array.include?(5)
=> true
array.include?(1) && array.include?(3) && array.include?(6)
=>false
all?と組み合わせば上記のようなコードをすっきり書くことができます。
調べたい複数要素も配列にしておきます。
array1 = [1, 2, 3, 4, 5]
array2 = [1, 3, 5]
array2.all?{|n| array1.include?(n)}
=> true
array2 = [1, 3, 6]
array2.all?{|n| array1.include?(n)}
=> false
このようにall?のブロック変数に一つずつ放り込む特徴を利用して引数を一つしか取れないinclude?を使えるようにしてあげます。