2012-10-29 6 views
5

가능한 중복 :
Why is `a = a` `nil` in Ruby?왜 X = X X가 정의되지 않은 경우에도 오류를 발생시키지 않습니다

난 그냥있어이 문제에 대한 이유가 확실 해요 그것이 무엇인지 궁금하다.

y = x # NameError: undefined local variable or method 'x' 
x = x # => nil 
+2

참조 : http://stackoverflow.com/questions/8908050/why-is-a-a-nil-in-ruby –

+0

중복에 대해 죄송합니다. 찾지 못했습니다. – mechanicalfish

답변

6

이것은 Ruby에서 변수가 초기화되는 방식으로 인해 발생합니다. 이는이 언어에서만 고유합니다. 기본적으로 루비는 값을 할당받을 수 있다면 변수를 초기화 (생성)합니다. 이 예제를 고려하십시오

if false 
    x = "hello" 
end 

x 확실히 여기 "hello" 문자열을 할당되지 않습니다. 그러나 정적 프로그램 분석 에서처럼 여전히 nil으로 초기화되며 할당 될 수 있습니다.

귀하의 예와 비슷합니다. x에 지정 했으므로 nil으로 초기화되고 문이 실행됩니다. 따라서 실행 중에 x은 실제로 nil입니다.

관련 문제