Symbolクラス

識別子
変数や定数、関数、メソッドなどにつける名前。英字またはアンダースコアをから始め、2文字目以降は0個以上の英数字またはアンダースコアでつなげる規則
:識別子
Symbolクラスのオブジェクト表記
Symbol
任意の文字列と一対一に対応するオブジェクト。文字列の代わりに用いることも可能だが、必ずしも文字列と同じ振る舞いをするわけではない。
  1. SymbolオブジェクトはRubyの内部では整数扱いなので、高速に比較できる
  2. Symbolオブジェクトは数値と異なり、人間にとって意味のある記述ができる。(つまり人間に解りやすい)

StringとSymbolの違い

Stringでは"a"と書くたびにオブジェクトが生成されます。しかしSymbolの:aは1つのオブジェクトだけを指すので、Stringと違って複数のオブジェクトが生成されることはない。