はじめてのRuby!collectメソッドでブロックの戻り値を取得する

collectメソッドを使用すると、配列の要素ごとにブロックの処理結果を取得できるので便利です。

「配列の要素ごとの演算結果を別の配列で取得したい」
「collectメソッドの使い方がいまいちわからない」

そんな方に向けて、ここでは以下の内容を解説していきます!


【基礎】collectメソッドとは
【基礎】collectメソッドの使い方
【基礎】collect!メソッドの使い方
【発展】範囲オブジェクトでcollectメソッドを使う方法

この記事ではcollectメソッドについてわかりやすく解説していますので、ぜひ参考にしてください。

collectメソッドとは

collectメソッドは一言で言うと「ブロックの結果を配列として返す」ためのものです。

そのため、配列の要素ごとに演算結果を取得したい場合などに、for文などの繰り返し処理を使わずに済むので非常に便利なメソッドです。

collectメソッドの書き方:

オブジェクト.collect {|item| block }
オブジェクト.collect! {|item| block }

オブジェクトには配列や範囲オブジェクトを指定します。

ブロックの引数itemには各要素が格納されます。

blockの処理結果を要素ごとに配列として返します。

「!」を指定した破壊的メソッドを使用することもできます。

また、mapメソッドはcollectメソッドの別名のため、同じ処理が可能です。

collectメソッドの基本

ここではcollectメソッドの基本的な使い方について、見ていきましょう。

collectメソッドの使い方

以下ではcollectメソッドを使用して、配列の値をブロックの処理で演算して結果を配列として返すプログラムです。

array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
p array.collect { |item| item * 3 }

実行結果:

[3, 6, 9, 12, 15, 18, 21, 24, 27]

ブロックの処理で実施される「item * 3」の処理が、要素ごとに結果として配列で返されていることがわかりますね!

以下では配列の要素ごとにupcaseメソッドを使用して、文字列を大文字に変換しています。

fruits = ["apple", "orange", "melon", "banana", "pineapple"]
p fruits.collect { |item| item.upcase }

実行結果:

["APPLE", "ORANGE", "MELON", "BANANA", "PINEAPPLE"]

collect!メソッドの使い方

collectメソッドは破壊的メソッドであるcollect!を使用することができます。

破壊的メソッドを使用すると、元の配列自身の内容が変更されます。

array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
array.collect! { |item| item * 3 }

p array

実行結果:

[3, 6, 9, 12, 15, 18, 21, 24, 27]

mapメソッドの使い方

mapメソッドはcollectメソッドの別名のため、同様の結果を返します。

array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
p array.map { |item| item * 3 }

実行結果:

[3, 6, 9, 12, 15, 18, 21, 24, 27]

範囲オブジェクトでcollectメソッドを使う方法

collectメソッドは範囲メソッドでも使用できます。

range = 1..9
p range.collect { |item| item * 5 }

実行結果:

[5, 10, 15, 20, 25, 30, 35, 40, 45]

配列同様ブロックの処理結果が配列として返されていることがわかりますね!

まとめ

ここでは、配列や範囲オブジェクトでのブロック処理を、配列として取得するcollectメソッドについて解説しました。

  • collectメソッドとは
  • collectメソッドの使い方
  • collect!メソッドの使い方
  • 範囲オブジェクトでcollectメソッドを使う方法

collectメソッドを使用すれば、簡単にブロックの処理を配列として取得できますので使い方についてはよく理解しておきましょう。

もしcollectメソッドについて忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

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

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

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

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

cta_under_bnr

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

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。