0
0

[Ruby]シンボルと文字列の違いを爆速で理解する

Posted at

はじめに

実務で、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ですね
シンボルがいいのかな

終わりに

シンボルはイミュータブル(不変)なオブジェクトみたいです。
これを機に、シンボルを多用していきたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0