2013-04-26 16 views
10

Kiedy mogę się dowiedzieć, kiedy zadeklarować zmienną, a nie w Ruby?Deklarowanie zmiennych w Ruby?

Chciałbym wiedzieć, dlaczego pierwszy kod musi być zadeklarowany jako ciąg i poza blokiem, podczas gdy drugi blok nie.

input = '' 
while input != 'bye' 
    puts input 
    input = gets.chomp 
end 
puts 'Come again soon!' 

kontra:

while true 
    input = gets.chomp 
    puts input 
    if input == 'bye' 
    break 
    end 
end 
puts 'Come again soon!' 

Odpowiedz

18

Nie zmiennym jest coraz zadeklarowane w Ruby. Przeciwnie, reguła jest taka, że ​​zmienna musi pojawić się w przypisaniu, zanim zostanie użyta.

Look w pierwszych dwóch liniach w pierwszym przykładzie:

input = '' 
while input != 'bye' 

Warunkiem while używa zmienna input. Dlatego zadanie jest konieczne przed nim. W drugim przykładzie

while true 
    input = gets.chomp 
    puts input 

Ponownie zmienna input przypisanego przed użyciem w wywołaniu puts. W obu przykładach wszystko jest zgodne ze światem.

+3

to nie jest * dokładnie * prawo w zależności od definicji "przypisany". Kontrastuj 'jeśli (fałsz), a = 3 koniec; a || 3' z 'b || 3'. Jeśli zdefiniujesz "przypisany" jak na jakiejkolwiek ścieżce wykonywania odczytanej przez interpreter, to tak, ale poza tym jego zmienne nigdy nie mogą być użyte zanim zostaną przydzielone przez interpreter. –

+0

Preciate to Gene, teraz ma sens! –

+2

@KristopherMicinski Wystarczająco fair. Powinien powiedzieć "pojawiają się w zadaniu", więc dokonał tej edycji. – Gene

Powiązane problemy