RoR特有かどうかは知らんけど、「シンボル」っていうのがある。
記述の仕方は以下の通り。
:action
ちなみに通常の文字列リテラルはシングルクォーテーションで囲む。
'action'
んで、違いなんだけど、シンボルとは一つのオブジェクトを指し続けるマークとのこと。
参考書的には、文字列リテラルがマジックによって定数に変えられたもの、だそう。
よくわからないので、参考にしたサイトでの違いを実践してみた。
コマンドライン上でRubyを書けるirbを使う。
$ irb
■文字列リテラルの場合
1.9.2-p290 :001 > for i in 1..10
1.9.2-p290 :002?> p 'action'.object_id
1.9.2-p290 :003?> end
70117233458100
70117233458020
70117233457980
70117233457940
70117233457900
70117233457860
70117233457820
70117233457760
70117233457700
70117233457660
=> 1..10
このように文字列リテラルだと、出力されるobject_idの値がプログラムで利用するたびに変化する。
つまり、毎回毎回新たなオブジェクトが生成されている、ということになる。
■シンボルの場合
1.9.2-p290 :004 > for i in 1..10
1.9.2-p290 :005?> p :action.object_id
1.9.2-p290 :006?> end
456168
456168
456168
456168
456168
456168
456168
456168
456168
456168
=> 1..10
一方で、シンボルを使うと、毎回object_idが「456168」と不変である。
そんなわけで上手い使いどころはわからんけど、文字列リテラルとシンボルの違いでした。
★追記
「シンボル」とはの良さ気な解説見つけたので貼る。
>変更できない「文字列のようなもの」
>変更のためのメソッドを持っていない
>同値ならば、必ず同一である
