3 ms·
if (a && b && c && d || e) { doSomething(); } becomes (if (or (and a b c d) e) (doSomething)) It's just a little more explicit because op
by likeclockwork 10y ago
if (a && b && c && d || e) {
doSomething();
}
becomes
(if (or (and a b c d) e)
(doSomething))
It's just a little more explicit because operator associativity and precedence aren't worked out for you. (For better or for worse.)
EDIT:
I think you were imagining something like this:
(if (or (and a (and b (and c (and d)))) e)
(doSomething))
..which is definitely not the art.
- kiiski 10y agoAdding to this, in a real situation those variables are probably not going to be nice single letter variables. With longer names the Lisp syntax with unambiguous structure/order of precedence becomes much nicer. (if (or (and foobar (some-predicate-p quux) (= qwerty 432)) (a-long-function-call-with-two-args bar ytr)) ...) Compared to something like: if (foobar && somePredicate(quux) && (qwerty == 432) || aLongFunctionCallWithTwoArgs(bar, ytr)) { ... }