2012-11-06 14 views
6

Non sono un madrelingua inglese. So che sembra comunque stupido. Scrivo in Python & C. Ma non riesco a capire come funziona unless.Non riesco a capire "a meno che" parola chiave in Ruby

È sano pensarlo da un punto di vista logico? Ad esempio, considerare la parola chiave if: if condition. Se condition è true, il codice viene eseguito. Qual è la spiegazione logica per unless?

C'è un altro modo per pensarci?

risposta

6

Rubino a meno modificatore:

Sintassi: codice a meno condizionale

esegue il codice se condizionale è falso.

Esempio:

$var = 1 
print "1 -- Value is set\n" if $var 
print "2 -- Value is set\n" unless $var 

$var = false 
print "3 -- Value is set\n" unless $var 

Questo produrrà seguente risultato:

1 - valore è impostato

3 - Il valore è impostato

8

Il modo più semplice è: unless è l'opposto di if. Funziona negli stessi luoghi (credo) come if:

foo = nil 
puts "This will not show" if foo 
puts "But this will" unless foo 

if foo then 
    puts "This will not show" 
end 
unless foo 
    puts "But this will" 
end 

Sembra più bello nel codice se si scrive unless foo invece di if !foo - ma questa è solo la mia opinione. Nel formato più lungo, è possibile utilizzare anche else, ma , per favore, non.

Questo è un set of rules to follow to make the code more readable.

23

unless x è equivalente a if !x

-1

Ecco un altro indizio che cosa mi rende felice con unless in Ruby:

In primo luogo, in situazioni in cui mi aspetto la condizione di essere falsa, e il codice sarà normalmente gestite , io uso unless:

unless name.empty? 
    puts "Hello #{name}" 
end 

In secondo luogo, ogni volta che mi aspetto che la condizione per essere vero, e il codice di norma non correre, io uso if not:

if not name == 'Awesome_Coder' 
    message.puts "Unauthorized!" 
end 
1

affamati = true "programmi di Ruby che sto scrivendo!"

meno fame

mette

altro

mette "Tempo di mangiare!"

fine

Questo è il modo semplice per capire

Problemi correlati