Straightforward question, how can I differentiate these ifs?
if (a is not 1 and not 2)
{
...
}
and
if (a is not 1 and 2)
{
...
}
As I understand it, first one can be written as if (a != 1 && a != 2), but what exactly the second one means? Would it be if (a != 1 && a == 2) ?
Answer
Would it be
if (a != 1 && a == 2)?
Yes. You can see the syntax of patterns here, not has a higher precedence than and.
pattern
: disjunctive_pattern
;
disjunctive_pattern
: disjunctive_pattern 'or' conjunctive_pattern
| conjunctive_pattern
;
conjunctive_pattern
: conjunctive_pattern 'and' negated_pattern
| negated_pattern
;
negated_pattern
: 'not' negated_pattern
| primary_pattern
;
On the other hand, x is not (1 and 2) would mean !(x == 1 && x == 2)

