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