Инфиксная нотация и с (…) не работают, как я ожидал

Рассмотрим следующий сценарий: у меня есть тест класса

class Test() { infix fun say(msg: String) = println(msg) } 

и основной метод

 fun main(args: Array<String>) { val test = Test() test say "Hello World!" //Works with(test) { say "Goodbye World!" //Does not work say("Hello again!") //Works } } 

Как вы можете видеть, я тестирую нотацию infix. Учитывая, что with(...) позволяет работать с объектом, переданным как параметр в блоке с без доступа к своим членам через точечную нотацию, я бы ожидал, что нотация infix будет работать, как показано в моем примере выше.

К сожалению, это не работает, есть ли причина, почему это не работает? Это ошибка или просто ограничение? Или, может быть, я не интерпретирую функцию with(...) правильно?

    Инфиксная нотация – это синтаксис того, как он используется. Он работает с объектом слева и параметром справа.

    При использовании with вами больше нет объектного токена слева, поэтому специальный синтаксис для нотации infix больше не работает. Вы должны вернуться к стандартной нотации функций.

    Это ограничение необходимо, чтобы синтаксический анализатор разбирал код без конфликтов с другим синтаксисом.

    Intereting Posts
    Как изменить префикс последовательности Kotlin, но сохранить хвост? Ошибка: выполнение выполнено для задачи ': app: javaPreCompileDebug'. > java.io.IOException: не удалось удалить annotationProcessors.json Maven с Kotlin 1.2: Требуемый класс отсутствовал kotlin / reflection / KDeclarationContainer Как обеспечить класс kotlin для конфигураций запуска eclipse? Не удалось получить вал в Котлине Перенос файлов Java в Kotlin в Android Studio Какова концепция намерения Котлина? Как получить KProperty1 из KProperty0 Количество экземпляров каждого тега с использованием функционального программирования Можно ли выразить kotlin 'с' эквивалентом метода в Scala? Почему этот тест инструментария Android вызывает активность onCreate дважды? Модуль библиотеки Android Kotlin экспортируется с плагином gradene maven-publish, не добавляющим зависимости Как контролировать, когда импорт заменяется шаблоном в Android Studio в файлах Kotlin Как я могу объявить параметр функции, который может быть строкой или функцией в Kotlin? Как проверить общий тип в Котлин?