2012-10-29 15 views

Odpowiedz

6

Jest to spowodowane tym, że zmienne są inicjowane w Ruby, co jest raczej unikalne dla tego języka. Zasadniczo Ruby inicjuje (tworzy) zmienną, jeśli możliwe jest przypisanie jej wartości. Rozważmy następujący przykład:

if false 
    x = "hello" 
end 

x pewno nie są przydzielane ciąg "hello" tutaj. Jednak nadal będzie on inicjowany za pomocą nil, ponieważ z analizy statycznego programu można go było przypisać.

Twój przykład jest podobny. Ponieważ przypisujesz coś do x, zostanie ono zainicjowane przed nilprzed wykonaniem instrukcji. Tak więc podczas wykonywania, x jest w rzeczywistości nil.

Powiązane problemy