Это неудачный результат того, что Котлин принимает точку с запятой в конце строки.
В таких языках, как Java, каждое утверждение должно заканчиваться точкой с запятой, поэтому нет никакой двусмысленности.
Kotlin позволяет пропустить точки с запятой, что может быть удобно. Но он немного перегружен: он выводит по одному в конце каждой строки, что само по себе имеет смысл, игнорируя следующие строки. Это довольно раздражает тех из нас, кто любит ставить операторы в начале строки, а не в конце ...
В большинстве случаев следующая строка сама по себе не имеет смысла, поэтому вы получаете сообщение об ошибке компилятора, чтобы предупредить вас о проблеме. К сожалению, вы нашли один из редких случаев, когда следующая строка является действительной, и поэтому нет ошибки! (У Kotlin есть унарный плюс , чтобы соответствовать его унарному минусу, поэтому +3
- это число, аналогичное -4
. И само число является допустимым выражением. Kotlin вычисляет значение, а затем отбрасывает она.)
Решения:
- Поместите все выражение в одну строку. (Что громоздко, если это долго!)
- Поставьте оператор в конец предыдущей строки. (Это именно то, чего ожидают разработчики языка, но некоторые из нас находят менее логичным и менее понятным.)
- Не позволяйте первой строке иметь смысл самостоятельно.
Лучший способ, который я нашел, сделать это с паренами:
val x = (2
+ 3)
Это выглядит неловко в очень коротком выражении, но оно работает достаточно хорошо на более длинных - не идеально, но необходимо, если / пока Котлин не станет умнее, где использовать точки с запятой ...