更新日:
【Ruby】 to_aメソッドの使い方を理解しよう
to_aメソッドとは、ハッシュ、範囲オブジェクトなどを配列に変換するメソッドです。
1
オブジェクト.to_a
to_aメソッドの使い方
この章では、to_aメソッドの使い方について解説します。
ハッシュオブジェクトに使う場合
ハッシュオブジェクトに使う例を見てみましょう。
1
2
3
human = {name: "pikawaka", age: e25}
human.to_a
=> [[:name, "pikawaka"], [:age, 25]]
このようにハッシュから配列に変換することができました。
この時注意するのは変換するキーとバリューが1つでも二次元配列になる点です。
※もっと詳しく知りたい方はこちらの記事を参照してください。
1つの時の例をみてみましょう。
1
2
3
human = {name: "pikawaka"}
human.to_a
=> [[:name, "pikawaka"]]
このように変換するキーとバリューのセットが1つでも配列の中に配列として変換されます。
キーはシンボルで指定した時はシンボルとして、文字列で指定した時は文字列として変換されます。
1
2
3
human = {name: "pikawaka", "age" => 25}
human.to_a
=> [[:name, "pikawaka"], ["age", 25]]
範囲オブジェクトに使う場合
範囲オブジェクトに使う例をみてみましょう。
範囲オブジェクトに使うと値が連続する配列に変換されます。
1
2
3
4
(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
("a".."z").to_a
=> ["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メソッド
はRuby on RailsのActiveRecordRelationクラスを配列に変換することもできます。
実際に使うときの例をみてみましょう。
1
2
3
4
5
6
7
users = User.where(name: ‘pikawaka’)
=> [#<User:0x007faf2b445a70
id: 1,
name: "pikawaka">]
users.class
=> User::ActiveRecord_Relation
中身はほとんど配列の形と同じなのですが、配列にオブジェクトを追加するpushメソッド
などが使えなかったりします。
1
2
users.push("ぴかわか")
NoMethodError: undefined method `push' for #<User::ActiveRecord_Relation:0x007faf2ac00f90>
このとき、to_aメソッド
を使うと配列に変換されpushメソッド
などが使えるようになるので非常に便利です。
1
2
3
4
5
6
7
8
9
10
11
12
users = User.where(name: ‘pikawaka’)
users.class
=> User::ActiveRecord_Relation
users.to_a.class
=> Array
users = users.to_a
users.push("ぴかわか")
=> [#<User:0x007faf2b445a70
id: 1,
name: "pikawaka">,
"ぴかわか"]
このようにActiveRecordRelationクラスからarrayクラスに変換されたことによって、配列クラスの pushメソッドが使える様になりました。
Rubyの用語やコードの読み方に不安があるという方は、こちらの書籍が参考になりますよ。
その他の変換系メソッド
Rubyには他にもオブジェクトの種類を変換するメソッドが用意されています。
メソッド | 変換する内容 | 参照 |
---|---|---|
to_s | 文字列型に変換 | 参照記事 |
to_i | 数値オブジェクトに変換 | 参照記事 |
to_f | Floatクラス(浮動小数点数)に「変換 | 参照記事 |
to_sym | シンボルに変換 | 参照記事 |
to_h | ハッシュオブジェクトに変換 | 参照記事 |
この記事のまとめ
- to_aメソッドはハッシュを配列に変換するメソッドのこと
- 範囲オブジェクトも配列に変換することが出来る
- 二次元配列として変換される