はじめてのRuby!to_aメソッドの使い方をわかりやすく解説

Rubyには配列や範囲オブジェクトの値を返すto_aメソッドがあります。

「to_aメソッドの使い方がよくわからない」
「配列と範囲オブジェクトを連結したい」

といった方に向けて、この記事ではto_aメソッドについて、以下の内容で解説していきます。


・to_aメソッドとは
・配列で使用する方法
・範囲オブジェクトで使用する方法
・文字列で使用する方法

to_aメソッドについてわかりやすく解説していますので、ぜひ参考にしてください!

目次

to_aメソッドとは

to_aは一言で言うと「レシーバ自身を返すメソッド」です。

to_aメソッドの書き方

オブジェクト.to_a

オブジェクトには配列や配列を返すメソッド、範囲オブジェクトなどを指定できます。

範囲オブジェクトを指定した場合、各要素を集めて配列として返します。

配列で使用する方法

ここでは配列でto_aメソッドを使用する方法を見ていきましょう。

以下のサンプルをご覧ください。

array1 = [1, 2, 3]
array2 = [4, 5, 6]
array3 = [7, 8, 9]

def array_m(a1, a2)
    a1.to_a + a2.to_a
end

p array_m(array1, array2)
p array_m(array1, array3)

実行結果:

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 7, 8, 9]

このサンプルではメソッドarray_mでto_aメソッドを使用して配列同士を連結して返しています。

以下のように配列と範囲オブジェクトを連結することもできます。

array = [1, 2, 3]
range = 4..6

def array_m(a1, a2)
    a1.to_a + a2.to_a
end

p array_m(array, range)

実行結果:

[1, 2, 3, 4, 5, 6]

このように配列と範囲オブジェクトの連結もできました。

前述したように範囲オブジェクトにto_aメソッドを指定した場合は配列として返すため、このような連結が可能になります。

もし、to_aメソッドを指定しなかった場合はエラー「TypeError」が発生します。

範囲オブジェクトで使用する方法

範囲オブジェクトにto_aメソッドを使用すると、以下のように配列で取得することができます。

range1 = 1..10
range2 = 'a'..'z'

p range1.to_a
p range2.to_a

実行結果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]

文字列で使用する方法

to_aメソッドは文字列に対しては使用できませんが、配列を返すメソッドを指定した場合は使用できます。

以下では文字列を指定した区切り文字で分割するsplitメソッドで文字列を配列にしています。

str = "apple, orange, melon, banana, pineapple"

p str.split(",").to_a

実行結果:

["apple", " orange", " melon", " banana", " pineapple"]

まとめ

ここでは、配列や範囲オブジェクトの値を返すto_aメソッドについて解説しました。

  • to_aメソッドとは
  • 配列で使用する方法
  • 範囲オブジェクトで使用する方法
  • 文字列で使用する方法

to_aメソッドは範囲オブジェクトの要素を1つずつ配列にして取得することができますので、使い方については覚えておきましょう。

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

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次