Я думаю, что это связано с определением языка:
Левое ассоциативной бинарной операцией e1 e2 оп интерпретируется как e1.op (е2).
http://www.scala-lang.org/docu/files/ScalaReference.pdf
Форма 1. + 2 нигде не указано, так что я думаю, что компилятор ищет либо 1 + 2 или 1 +. (2). На самом деле компилятор обычно преобразует 1 + 2 в 1. + (2). При использовании. он ожидает функцию, а не синтаксис инфикса.
Нижняя линия: вы можете использовать любой, но не на половине пути.
PD: кто-то прокомментировал вызов метода, который вам нужен, чтобы использовать его следующим образом: obj.somemethod(someparam,foo,bar)
, но в этом случае вы также можете сделать это: obj somemethod (someparam,foo,bar)
, и вам нужно покинуть пространство для его работы.
Когда вы вызываете метод точкой, вам нужно заключить параметры в скобки, как в регулярном 'obj.somemethod (someparam, foo, bar)' – ghik
Не нужны скобки: '1. + 2', но тип результата is 'Double' – idonnie
@idonnie Да, но это что-то еще. То, что вы написали, эквивалентно '1.0 + 2' (точка означает десятичный разделитель, а не вызов метода) – ghik