Пробелы вокруг знака минус имеют значение:
f -1 // means f(-1)
вызывает функцию f
с аргументом -1
(унарный минус).Тогда как
n - 1
и
n-1
являются вычитанием.
Ошибка компилятора отражает то, что
Array.length m -1
анализируется как
(Array.length m)(-1)
, как будто он ожидает, что первое выражение возвратит функцию, которая затем будет применена кзначение -1
.Поскольку length на самом деле возвращает int
, вы получите сообщение об ошибке, в котором говорится, что целое число не является функцией и не может быть применено к аргументу -1
.