foolish::log

@takochuu のブログです。

Rubyにおけるsymbolについて

最近会社でRubyを書いていて、黒魔術師レベル1になったtakochuuです。
Ruby楽しいっすね!!

だけどsymbolの用法が全然わからなかったので自分なりに解釈した。

symbolの場合は参照しているobjectは同じものになります。

1.9.3p0 :006 >   x = :hoge
 => :hoge 
1.9.3p0 :007 > y = :hoge
 => :hoge 
1.9.3p0 :008 > x.object_id
 => 457448 
1.9.3p0 :009 > y.object_id
 => 457448
1.9.3p0 :010 > x==y
 => true

文字列の場合は同じ文字列であっても違うobjectを参照します。

1.9.3p0 :011 > x = 'hoge'
 => "hoge" 
1.9.3p0 :012 > y = 'hoge'
 => "hoge" 
1.9.3p0 :013 > x.object_id
 => 70236779149500 
1.9.3p0 :014 > y.object_id
 => 70236779137480 
1.9.3p0 :015 > x==y
 => true 

symbolは定義の度にobjectを生成しない為、Hashのkeyに使用するのがいいらしい。