2009-03-13 7 views
10
temp = 98.3 
begin 
    print "Your temperature is " + temp.to_s + " Fahrenheit. " 
    puts "I think you're okay." 
    temp += 0.1 
end while temp < 98.6 

Nell'esempio precedente, è tutto tra l'inizio e la fine di un blocco?Inizia. . . fine mentre denota un 'blocco'?

Sono ancora confuso che cos'è un blocco.

Se non si può chiamare un blocco, come si chiamerebbe quel pezzo di codice tra inizio e fine? Va bene chiamarlo un pezzo?

risposta

19

Il blocco ha un significato speciale in Ruby. According to Matz, il creatore di Ruby, è possibile considerare un blocco come una funzione senza nome, in genere qualcosa che può essere modificato in yield e che può anche assumere parametri.

Si può visualizzare il seguente tipo di disamiguation quando descrive Rubino sintassi:

  • begin ... end (quello che viene chiamato blocco nel altre lingue) possono a volte essere indicato semplicemente come quello che è, cioè un expression (che a sua volta può contenere altre espressioni - un'espressione è semplicemente qualcosa che ha un valore di ritorno) in Ruby. Alcuni riferimenti saranno ancora chiamarlo un begin/end block, o un code block, aggiungendo un po 'di confusione
  • do ... end o {...} sarà sempre indicato come un block in Ruby

Per esempi, sfogliare il the Ruby syntax man page , per esempio

beginexpressionend
expressionwhileexpression
loopblock

Per approfondimenti, consultare:

8

begin/end sono rigorosamente di controllo del flusso, non blocchi.

begin 
    puts "hi" 
end 
# => "hi" 

Il codice viene eseguito immediatamente. Se si trattasse di un blocco, sarebbe stato chiamato in qualche modo per l'esecuzione del codice, come in questo esempio:

def a_method; end 
a_method { puts "hi" } 
# nothing.. 

def a_method 
    yield 
end 

a_method { puts "Hi!" } 
# => "Hi!" 
Problemi correlati