Euforia - Valutazione del cortocircuito
Quando una condizione viene testata da if, elsif, until, o while utilizzando and o oroperatori, viene utilizzata una valutazione di cortocircuito. Ad esempio:
if a < 0 and b > 0 then
-- block of code
end if
Se a <0 è falso, Euphoria non si preoccupa di verificare se b è maggiore di 0. Sa che il risultato complessivo è falso a prescindere. Allo stesso modo -
if a < 0 or b > 0 then
-- block of code
end if
se a <0 è vero, allora Euphoria decide immediatamente che il risultato è vero, senza testare il valore di b, poiché il risultato di questo test è irrilevante.
In generale, ogni volta che si ha una condizione del seguente modulo:
A and B
Dove A e B possono essere due espressioni qualsiasi, Euphoria prende una scorciatoia quando A è falso e rende immediatamente falso il risultato complessivo, senza nemmeno guardare l'espressione B.
Allo stesso modo, ogni volta che si ha una condizione della seguente forma:
A or B
Dove A è vero, Euphoria salta la valutazione dell'espressione B e dichiara che il risultato è vero.
Short-circuitla valutazione di and e or avviene solo per le condizioni if, elsif, until e while. Non è utilizzato in altri contesti. Ad esempio:
x = 1 or {1,2,3,4,5} -- x should be set to {1,1,1,1,1}
Se qui fosse usato il cortocircuito, imposteresti x a 1 e non guarderesti nemmeno {1,2,3,4,5}, il che sarebbe sbagliato.
Pertanto, il cortocircuito può essere utilizzato nelle condizioni if, elsif, until o while, perché è necessario preoccuparsi solo se il risultato è vero o falso e le condizioni sono necessarie per produrre un atomo come risultato.