はじめに
実務で、rubyを触った際に、シンボルが出てきて何だっけこれ?となったのでその違いをまとめます
シンボルとは
任意の文字列と一対一に対応するオブジェクトのこと。
文字列の代わりに用いることができるが、必ずしも文字列と同じ振る舞いをするわけではない。
シンボル.rb
:apple
:japan
:ruby_is_fun
違いは
-
文字列はStringクラスのオブジェクト
-
シンボルはSymbolクラスのオブジェクト
これです。
また、シンボルは
- 文字列よりも高速に処理できること
- 全く同じシンボルであるということ
です。
同じオブジェクトかどうかを調べてみる
object_idを使って、調べてみると
.rb
:apple.object_id #=> 1143388
:apple.object_id #=> 1143388
:apple.object_id #=> 1143388
'apple'.object_id #=> 703212292
'apple'.object_id #=> 703211292
'apple'.object_id #=> 703211290
文字列は3つとも異なるIDですね
シンボルがいいのかな
終わりに
シンボルはイミュータブル(不変)なオブジェクトみたいです。
これを機に、シンボルを多用していきたいです。