infix-ной любую функцию с одним аргументом. Для взаимодействия с java кодом было бы удобно.
1) с двумя параметрами 2) инфиксные функции чаще не нужны, чем нужны, так что нет.
1) с одним параметром) eventBus send event 2) инфиксные функции всегда нужны, т.к. обилие скобочек читабельность портит
Ну, один из параметров ресивер
"Туда тоже можно" (С) В любом случае, после изъятия infix одним кодовым словом было бы меньше, а одним удобством было бы больше.
Конечно нет. В Котлине всегда автор функции, а не пользователь функции, решает как её можно использовать. Это обеспечивает согласованность кода и упрощает читаемость кода, так как уменьшает потенциальное разнообразие, когда, одни пользователи пишут код одним образом, а другие — другим. Поэтому в Котлине нет и не будет аналога "universall function call syntax" как в языке D, нельзя опускать скобки при вызове произвольной функции как Groovy, и т.п. Из практических соображений, это не 100% жестко соблюдается (например, infix функции можно вызвать и со скобками, есть и другие похожие послабления), но все-таки позволяет коду на Котлин превосходить по легкости понимания многие другие языки.
Вот эта часть ( "infix функции можно вызвать и со скобками") как раз наводит на мысль, что infix не нужен. Если мы имеем возможность писать и со скобками и без, то можно бы предоставить возможность делать так для всех функций с одним аргументом, без потери общности. Авторы функций java библиотек может и не были бы против, но в java нет такой возможности.
infix функции нужны, в основном, для использования в различных DSL-ях. Классический пример можно найти прямо в stdlib: mapOf("a" to "b", "c" to "d"). Такой код, если его написать со скобками, выглядит настолько хуже, что возможность вызова инфиксной функции to со скобками не создает проблем на практике (я ни разу такого не видел).
Dsl без infix-ных функций вообще был бы фикцией) Но на моей практике оказалось, что читабельность от infix повышается почти везде. Трудно придумать пример, где infix бы читабельность ухудшил. Поэтому и хотелось бы иметь такую возможность и при работе с java кодом. То есть даже там, где кодовое слово infix отсутствует.
"в основном, для использования в различных DSL" Собственно, если так подходить, то отмена infix приведет к тому, что появится возможность превращать в DSL даже тот код, который изначально для DSL не предназначался.
Ну а что?) отменяем infix, делаем небольшую доработку и древний, как дерьмо мамонта, java код превращается в приемлемый DSL.
А я не хочу что бы мой код использовали как дсл, ведь он не для дсл
В будущем весь код будет только DSL, потому что так гораздо понятнее. Поэтому не будем ретроградами), а наоборот будем стремиться к лучшему.
DSL не всегда нужен. DSL нужен что бы предоставить пользователю удобное конструирование объекта/системы или ее испольжование
Обсуждают сегодня