Come scrivere ‘se’ e senza l’utilizzo di ‘allora’ o ‘fine’ in Ruby

Ho trovato tre modi per scrivere la stessa condizione in Ruby:

#1
if 1==1 
  puts "true" 
end

#2
puts "true" if 1==1

#3
if 1==1  then puts "true" end

Perché non riesco a fare questo?

#4
if 1==1 puts "true"

Non capisco:

  1. Perché poi e fine sono necessari in #3, e,
  2. Perchè ho la necessità di modificare l’ordine per ottenere il #2 di lavoro.

Istruzione #4 sembra il modo più naturale per scrivere questo. Non capisco perché non è possibile.

InformationsquelleAutor | 2009-03-10

 

3 Replies
  1. 19

    Il “if x then y end” la sintassi è pensato per multiline condizionali, mentre il “y if x” modulo è pensato per conciso singola riga di istruzioni condizionali. Il then è necessario nel primo caso di dire Rubino, che la condizione è finita, dal momento che Ruby non richiede una parentesi come C), e il end è necessario dire Rubino, che tutta la if blocco è finita, dal momento che può essere più linee).

    È possibile sostituire il then con un punto e virgola, perché un end-of-line segna anche la fine della condizione. Non è possibile sbarazzarsi del end con un multiplo if. Usare la seconda forma o l’operatore ternario se volete un breve one-liner.

    Per esempio, supponiamo che

    x = true

    seguenti valuterà vero, e tornare y

    x ? y :
    => y

    allo stesso modo, questo valuterà false e non ritorna nulla

    !x ? y :
    => 

    aggiungere un termine dopo il ‘:’ per l’altro caso

    !x ? y : z
    => z
    • “dal momento che Ruby non richiede una parentesi come C” – l’avevo dimenticato. Ok, ha senso perche ‘poi’ è necessario. Non conoscevo il punto e virgola, sembra un po ‘ strano, ma funziona. Molto utile. Grazie.
  2. 4

    Il fatto è che in entrambi i modi, in realtà sono un modo naturale di pensare:

    se questo è vero allora fare qualcosa

    fare qualcosa se questo è vero

    Vedere? Ruby cerca di avvicinarsi della sintassi della lingua inglese in questo modo. Il fine è necessario solo alla fine del blocco, mentre nella seconda versione, il blocco è già chiuso con il se.

    Effettivamente rispondere alla tua domanda, penso che non c’è alcuna possibilità di ottenere il poi e fine rimosso. Ricorda Pascal /Delphi? Si dispone di un poi lì. È tipico solo di tipo C lingue non hanno.

  3. 0

    Che cosa circa usando i due punti invece di come questo? http://www.java2s.com/Code/Ruby/Statement/layoutanifstatementisbyreplacingthethenwithacolon.htm

    Ci sono vari modi in cui si potrebbe verificare un corto circuito, se si voleva farlo.

    L’istruzione condizionale è solo una parte della sintassi di Ruby per rendere di più l’inglese.

    • Per quel che vale, questo uso del colon è andato come di Ruby 1.9 – lo stesso per il, quando le prove in caso di dichiarazioni. Vedere David Black “Figlio di 10 cose di essere a conoscenza di Ruby 1.9”

Lascia un commento