2013-04-26 17 views
10

Quando so quando dichiarare una variabile e non in Ruby?Dichiarare le variabili in Ruby?

Vorrei sapere perché il primo codice ha bisogno di input per essere dichiarato come una stringa e al di fuori del blocco, mentre il secondo blocco no.

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

versus:

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

risposta

18

nessuna variabile viene mai dichiarata in Ruby. Piuttosto, la regola è che una variabile deve apparire in un compito prima che venga utilizzata.

Guardate le prime due righe nel primo esempio:

input = '' 
while input != 'bye' 

La condizione while utilizza la variabile input. Pertanto l'incarico è necessario prima di esso. Nel secondo esempio:

while true 
    input = gets.chomp 
    puts input 

nuovo, la variabile viene assegnato input prima che venga utilizzato nella chiamata puts. Tutto è giusto con il mondo in entrambi gli esempi.

+3

questo non è * esattamente * corretto in base alla definizione di "assegnato". Contrasto 'if (false) quindi a = 3 fine; a || 3' con 'b || 3'. Se si definisce "assegnato" come su qualsiasi percorso di esecuzione letto dall'interprete allora sì, ma altrimenti le variabili non possono mai essere utilizzate prima che vengano assegnate dall'interprete. –

+0

Preciso esso Gene, ha senso ora !! –

+2

@KristopherMicinski Fiera abbastanza. Dovrebbe aver detto "apparire in un incarico", così fatto che modifica. – Gene

Problemi correlati