はじめての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

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説