Looking for ruby Keywords? Try Ask4Keywords

Ruby Language Kontrollera flödet med logiska uttalanden


Exempel

Även om det kan verka motsatt, kan du använda logiska operatörer för att avgöra om ett uttal körs eller inte. Till exempel:

File.exist?(filename) or STDERR.puts "#{filename} does not exist!"

Detta kontrollerar om filen finns och skrivs bara ut felmeddelandet om den inte gör det. Uttalandet or är uttömt, vilket innebär att det slutar köra när det är säkert vilket värde det är sant eller falskt. Så snart den första termen har visat sig vara sant, finns det inget behov av att kontrollera värdet på den andra termen. Men om den första termen är falsk, måste den kontrollera den andra termen.

En vanlig användning är att ställa in ett standardvärde:

glass = glass or 'full' # Optimist! 

Det sätter värdet på glass till "fullt" om det inte redan är inställt. Mer kortfattat kan du använda den symboliska versionen av or :

glass ||= 'empty' # Pessimist. 

Det är också möjligt att köra det andra uttalandet endast om det första är felaktigt:

File.exist?(filename) and puts "#{filename} found!"

Återigen, and är lat så det kommer endast att utföra det andra uttalandet om det är nödvändigt för att komma fram till ett värde.

Operatören or operatören har lägre prioritet än and . På liknande sätt || har lägre prioritet än && . Symbolformerna har högre prioritet än ordformerna. Detta är praktiskt att veta när du vill blanda denna teknik med uppdrag:

a = 1 and b = 2
#=> a==1
#=> b==2
a = 1 && b = 2; puts a, b
#=> a==2
#=> b==2

Observera att Ruby Style Guide rekommenderar :

De and och or nyckelorden är förbjudna. Den minimala läsbarheten är bara inte värt den höga sannolikheten för att införa subtila buggar. Använd alltid && och || för booleska uttryck istället. För flödeskontroll, använd if och om unless ; && och || är också acceptabla men mindre tydliga.