Rubyにおける「シンボル」ってなんだ?

結局「シンボル」ってなに…

結論から言うとシンボルはRubyの内部で整数として扱われる。2つの値が同じか調べるときなど、文字列よりも高速に処理することができる。

シンボルのほうがさらにメモリの使用効率が良いらしい。

irb(main):009:0* 'a'.object_id
=> 70227007054700
irb(main):010:0> 'a'.object_id
=> 70227010342780
irb(main):011:0> 'a'.object_id
=> 70227010329420

irb(main):013:0* :a.object_id
=> 736988
irb(main):014:0> :a.object_id
=> 736988
irb(main):015:0> :a.object_id
=> 736988

シンボルは同じシンボルであれば同じオブジェクトであるということらしい。

Stringの場合はobject_idが実行ごとに変わっている

なんで「シンボル」使ってるんだろうとか考えたことなかったな… 勉強勉強…

f:id:takakudakei:20181129005549j:plain