すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

Ruby

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

ぴっかちゃん
ぴっかちゃん

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メソッドがある