답변:
변수와 기호는 다릅니다. 변수는 다른 종류의 데이터를 가리 킵니다. 루비에서 기호는 변수보다 문자열과 비슷합니다.
루비에서는 문자열을 변경할 수 있지만 기호는 변경할 수 없습니다. 즉, 하나의 심볼 사본 만 작성하면됩니다. 따라서
x = :my_str
y = :my_str
:my_str
한 번만 생성 될 것입니다 x
및 y
지점 같은 메모리 영역. 반면에
x = "my_str"
y = "my_str"
포함하는 문자열이 my_str
생성됩니다 두 번 하고, x
그리고 y
서로 다른 인스턴스를 가리 킵니다.
결과적으로 기호는 종종 루비의 열거 형과 같은 사전으로 사용되며 사전의 키 (해시)입니다.
#mySymbol
.
루비의 기호는 기본적으로 실제 기호와 동일합니다. 그것은 무언가를 나타내거나 이름을 짓는데 사용됩니다.
기호는 예를 들어 어떤 종류의 상태를 나타내는 데 매우 일반적으로 사용됩니다.
order.status = :canceled
order.status = :confirmed
심볼을 인스턴트 열거 형으로 볼 수도 있습니다. 심볼을 정의 할 필요는 없으며 그냥 사용하면됩니다. 이 기사에서 자세히 설명합니다.
일반적으로 변수는 문자열과 혼동되는 경향이 있지만 변수처럼 생각한다고 이해할 수 있습니다. 이해할 수 있습니다. 이런 식으로 생각하십시오 :
게임에서 플레이어의 상태는 숫자로 표시됩니다. 1은 살아 있음을, 2는 확실하지 않음을, 3은 죽었 음을 의미합니다. 이것은 쉽게 기호로 대체 될 수 있습니다. 기호는 :alive
:unsure
및 일 수 있습니다 :dead
. 플레이어 대신 살아 있는지 확인하려면 :
if player_status == 1
당신은 이것을 할 수 있습니다 :
if player_status == :alive