Rubyの世界はまったく新しいので、シンボルの概念と少し混乱しています。シンボルと変数の違いは何ですか?なぜ変数を使用しないのですか?
ありがとう。
変数とシンボルは別物です。変数はさまざまな種類のデータを指します。 Rubyでは、シンボルは変数というよりも文字列に似ています。
Rubyでは、文字列は変更可能ですが、記号は不変です。つまり、シンボルのコピーを1つだけ作成する必要があります。したがって、あなたが持っている場合
x = :my_str
y = :my_str
:my_str
は一度だけ作成され、x
とy
は同じメモリ領域を指します。一方、あなたが持っている場合
x = "my_str"
y = "my_str"
my_str
を含む文字列が作成されますtwice、およびx
とy
は異なるインスタンスを指します。
そのため、Rubyの列挙型や辞書(ハッシュ)のキーと同じように記号がよく使用されます。
Ruby内のシンボルは基本的に実世界のシンボルと同じものです。何かを表現したり名前を付けたりするために使用されます。
シンボルは、ある種の状態を表すために非常によく使用されます。たとえば、
order.status = :canceled
order.status = :confirmed
シンボルをインスタント列挙型として見ることもできます。シンボルを定義する必要はなく、使用するだけです。 この記事はそれを非常に詳細に説明しています。
通常、変数は文字列と混同される傾向がありますが、変数のように考えると理解できます。それは理解できます。このように考えてください:
ゲーム内のプレーヤーのステータスは数値で表されます。 1は生存、2は不明、3は死亡を意味します。これは簡単にシンボルに置き換えることができます。シンボルは:alive
:unsure
および:dead
。これを行う代わりに、プレイヤーが生きているかどうかを確認するには:
if player_status == 1
あなたはこれを行うことができます:
if player_status == :alive