После некоторой проверки в спецификации Scala, я думаю, что могу попробовать.Если я ошибаюсь, пожалуйста, исправьте меня.
сначала if
или match
определяются как Expr
- выражения.
Вы пытаетесь создать инфиксное выражение (определяется какиспользование оператора между двумя выражениями)
Однако спецификация (раздел 3.2.8) гласит, что:
Все операторы типа in имеют одинаковый приоритет;Для группировки необходимо использовать круглые скобки
Также указывается, что:
В последовательности последовательного типа в операциях с фиксированным числом t0 op1 t1 op2.,.opn tn, все операторы op1,.,,, opn должен иметь одинаковую ассоциативность.Если все они левоассоциативны, последовательность интерпретируется как (... (T0 op1 t1) op2..) Opn tn.
Поэтому я считаю, что Scala не знает, чтосначала уменьшите: совпадение или вызов метода «+».
Взгляните на этот ответ
Пожалуйста, исправьте меня, если я ошибаюсь.