【Ruby】to_symメソッドの使い方を理解しよう

Ruby

to_symメソッドとは、文字列オブジェクトをシンボルに変換するメソッドです。

to_symメソッドの構文
1
文字列オブジェクト.to_sym

例えば、以下のように記述すると、「hoge」という文字列オブジェクトを「:hoge」のようにシンボルに変換することが出来ます。

irb | to_symメソッドの使用例
1
2
"hoge".to_sym
=> :hoge

クラスを確認すると、以下のようにSymbolになります。

irb | クラスの確認
1
2
3
4
5
"hoge".class
=> String

"hoge".to_sym.class
=> Symbol

to_symメソッドの使い方

この章では、シンボルやto_symメソッドを使用する場面などについて解説します。

シンボルとは?
リンクをコピーしました

シンボルとは任意の文字列と一対一に対応するオブジェクトです。
文字の代わりとして使うこともできますが、必ず文字列と同じように使われるわけではありません。
シンボルは見た目は文字ではありますが、内部では整数として扱われるので文字列オブジェクトより高速に処理されるという特徴があります。

シンボルについてはこちらの記事も参照ください。

どのような時に使うか
リンクをコピーしました

例えば下記のようなハッシュを作成して、getsメソッドで表示させたいバリューのキーを入力してもらいます。

gets.chompの時
1
2
3
4
5
6
human = {name: "pikawaka", age: 25}

key = gets.chomp
# 「name」と入力
p human[:key]
# human[:name]となってバリューである「pikawaka」が出力されるか?

このコードを実行してもシンボルとみなされず何も表示できません。

何も表示されない

このようなときにto_symメソッドを使います。

to_symメソッドを使った時
1
2
3
4
5
6
human = {name: "pikawaka", age: 25}

key = gets.chomp.to_sym
# 「name」と入力しto_symメソッドで「:name」に変換
p human[key]
# human[:name]となってバリューである「pikawaka」が出力されるか?

すると下記のようにバリューが出力されました。

to_symメソッド

エイリアスメソッド
リンクをコピーしました

エイリアスメソッドとしてinternがあります。

irb | internメッソドの実行
1
2
"hoge".intern
=> :hoge

その他の変換系メソッド
リンクをコピーしました

Rubyには他にもオブジェクトの種類を変換するメソッドが用意されています。

メソッド 変換する内容 参照
to_s 文字列型に変換 参照記事
to_i 数値オブジェクトに変換 参照記事
to_f Floatクラス(浮動小数点数)に「変換 参照記事
to_h ハッシュオブジェクトに変換 参照記事
to_a 配列オブジェクトに変換 参照記事
まとめ
  • to_symメソッドは文字列オブジェクトをシンボルに変換するメソッドです。
  • 文字列よりシンボルの方が高速に処理される特徴があります。
  • エイリアスとしてinternメソッドがあります。