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」が出力されるか?
すると下記のようにバリューが出力されました。
エイリアスメソッド
エイリアスメソッドとしてintern
があります。
irb | internメッソドの実行 -->
1
2
"hoge".intern
=> :hoge
その他の変換系メソッド
Rubyには他にもオブジェクトの種類を変換するメソッドが用意されています。
メソッド | 変換する内容 | 参照 |
---|---|---|
to_s | 文字列型に変換 | 参照記事 |
to_i | 数値オブジェクトに変換 | 参照記事 |
to_f | Floatクラス(浮動小数点数)に「変換 | 参照記事 |
to_h | ハッシュオブジェクトに変換 | 参照記事 |
to_a | 配列オブジェクトに変換 | 参照記事 |
この記事のまとめ
- to_symメソッドは文字列オブジェクトをシンボルに変換するメソッドのこと
- 文字列よりシンボルの方が高速に処理される特徴がある
- エイリアスとしてinternメソッドがある
役に立ったらSHARE♪