回答:
変数とシンボルは異なります。変数はさまざまな種類のデータを指します。Rubyでは、シンボルは変数というよりも文字列に似ています。
Rubyでは、文字列は可変ですが、シンボルは不変です。つまり、シンボルのコピーを1つだけ作成する必要があります。したがって、あなたが持っている場合
x = :my_str
y = :my_str
:my_str
一度だけ作成、され、x
かつy
メモリの同じ領域をポイントします。一方、持っている場合
x = "my_str"
y = "my_str"
含む文字列がmy_str
作成され二回、そしてx
とy
異なるインスタンスを指しています。
その結果、シンボルは多くの場合、Rubyの列挙型に相当するものとして使用されるほか、辞書のキー(ハッシュ)として使用されます。
#mySymbol
ます。
Rubyのシンボルは、基本的に実世界のシンボルと同じものです。何かを表現したり、名前を付けるために使用されます。
シンボルは、ある種の状態を表すために非常に一般的に使用されます。たとえば、
order.status = :canceled
order.status = :confirmed
シンボルをインスタント列挙として見ることもできます。シンボルを定義する必要はなく、使用するだけです。この記事では、詳細に説明します。