はじめてのRuby!all?メソッドの使い方をマスターしよう!

こんにちは!エンジニア兼ライターのヤマシタです。

Rubyには配列の評価を行い、全ての値が真の場合にtrueを返すall?メソッドがあます。

all?メソッドを使用すれば、配列の値を使用する前に配列の評価を行うことができます。

ここでは、そんなall?メソッドについて

【基礎】all?メソッドとは
【基礎】all?メソッドの基本的な使い方
【発展】ブロックの省略
【発展】if文との組み合わせ

などについて解説いたします。

all?メソッドは配列の評価を行うときに便利なメソッドですので、使い方はよく理解しておきましょう。

all?メソッドとは

all?メソッドは配列の要素を繰り返し実行し、ブロックの返り値が全て真の場合にtrueを返すメソッドです。

書き方:

オブジェクト.all? { |要素| ブロック処理}

たとえば、配列の中に指定した要素より大きい値が存在するかなど、条件に全て一致するか確認したい場合に使用します。

次の章よりall?メソッドの具体的な使い方について見ていきましょう。

all?メソッドの使い方

以下のサンプルプログラムでは、配列の中に10以上の値が存在するかを調べています。

サンプルプログラム:

array = [10, 20, 30, 40, 50]

puts array.all? { |w| w > 10 }

実行結果:

false

このプログラムでは、all?メソッドを使用して、配列の中の値が全て10以上だったらtrueを返します。

しかし、配列の値は10以上ではない値も含まれているため、返り値はfalseを返しています。

all?メソッドは、ブロックの引数wに配列の要素を順番に格納しながら繰り返し「w > 10」の条件式を実行し、条件式が偽になった時点で処理を中断してfalseを返します。

以下のサンプルは、ブロック処理の結果が全て真となるのでtrueを返します。

サンプルプログラム:

array = [20, 20, 30, 40, 50]

puts array.all? { |w| w > 10 }

実行結果:

true

以下の例では配列の要素が全て文字列か調べています。

サンプルプログラム:

fruits = ["apple", "orange", "melon", "strawberry", "banana", "pineapple"]

puts fruits.all? { |w| w.kind_of?(String) }

実行結果:

true

配列の値は全て文字列なのでtrueを返しました!

ブロックの省略

all?メソッドはブロックを省略した場合は、要素の中の値が全て真ならtrueを返します。

サンプルプログラム:

array1 = [true, true, true]
array2 = ["apple", "orange", "melon", "strawberry", "banana", "pineapple"]

puts array1.all?
puts array2.all?

実行結果:

true
true

このようにブロックを省略した場合は、配列の中に値が全て存在する場合や全てtrueの場合にtrueを返します。

if文との組み合わせ

all?メソッドは条件に一致した要素が全て存在するか?などの配列の要素チェックが可能なため、

if文と組み合わせて、配列の中身をあらかじめチェックしたい場合に使用すると便利です。

サンプルプログラム:

array1 = [100, 200, 300, 400, 500]
array2 = [true, false, true]
array3 = [10, 20, 30, 40, 50]


if array1.all?
    puts "array1 OK!"
else
    puts "array1 NG"
end

if array2.all?
    puts "array2 OK!"
else
    puts "array2 NG"
end

if array3.all? { |w| w > 30 }
    puts "array3 OK!"
else
    puts "array3 NG"
end

実行結果:

array1 OK!
array2 NG
array3 NG

配列のどれかが一致するか確認する場合

allメソッドは配列の要素が全てブロックの条件に一致した場合にtrueを返しますが、配列の要素のうち、どれかが一致した場合にtrueを返したい場合any?メソッドを使用します。

any?メソッドについては、以下の記事で詳しく解説しています!

まとめ

ここではall?メソッドについて、

  • all?メソッドとは
  • all?メソッドの基本的な使い方
  • ブロック処理を省略する使い方
  • if文との組み合わせ方法

などについて解説しました。

all?メソッドを使用すれば、配列を使用する前に配列の評価を行うことができますので、その後起こりうるエラーを回避することができます。

もし、all?メソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部として、これまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー