Oggi ho appreso la briosa valutazione booleana. Nell'esempio seguente, Bar()
verrà valutata anche quando Foo()
è true.
if (Foo() | Bar())
Questa risposta su SO ha un esempio:
if ((first = (i == 7)) & (second = (j == 10))) { //do something }
Il caso d'uso qui è che vuoi riutilizzare i risultati, ma preferisco scriverlo in questo modo:
first = (i == 7);
second = (j == 10);
if (first && second) { //do something }
Un altro caso d'uso sarebbe che Bar()
ha un effetto collaterale che dovrebbe essere eseguito indipendentemente dal fatto che Foo()
sia vero o falso. La domanda è, può essere un buon codice o potrebbe indicare un odore di codice?