Проблема, которую вы видите, состоит в том, что если вы пропустите точки, код будет неоднозначным. Компилятор будет обрабатывать выражение как
var foo = baz.bar(println(foo))
, таким образом, foo
определяется рекурсивно, а для метода StringOps.apply
требуется аргумент Int
(String
будет неявно преобразован в StringOps
, поскольку String
не имеет apply
метода).
Вы должны использовать оператор как синтаксис только при вызове методов, которые принимают один не Unit
аргумент, чтобы избежать таких неоднозначностей.