Intereting Posts
Сортировка объектов по алфавиту Как упаковать родную библиотеку kotlin, чтобы ее можно было использовать в проектах Android и iOS? Конструкторы в Котлине Kotlin приостанавливает функцию рекурсивного вызова Что делает оверенность типа Котлина возможной, что невозможно в Java или Scala? Как присоединиться к двум RxJava2 Obvervables по ключу? Большой размер файла при преобразовании растрового изображения в PDF Можно ли запустить AsyncWebRequest через браузер? Эффективный способ добавления строк, разделенных запятой Как собрать асинхронный ответ с помощью RxJava BLE не может подключиться к уже подключенному устройству Как получить доступ к аргументу конструктора, который не является переменной-членом в функции init? Проект Android Kotlin не смог синхронизировать проект Gradle динамически созданный текст, как сделать findViewByTag в kotlin, он показывает неразрешенные ссылки Копирование файла автоматически с помощью pom

Есть ли встроенный метод Kotlin для применения функции void для оценки?

Я написал этот метод, чтобы применить функцию void к значению и вернуть значение.

public inline fun <T> T.apply(f: (T) -> Unit): T { f(this) return this } 

Это полезно для сокращения примерно так:

 return values.map { var other = it.toOther() doStuff(other) return other } 

Что-то вроде этого:

 return values.map { it.toOther().apply({ doStuff(it) }) } 

Есть ли в Kotlin языковая функция или метод, подобные этому?

Я столкнулся с той же проблемой. Мое решение в основном такое же, как у вас, с небольшой доработкой:

 inline fun <T> T.apply(f: T.() -> Any): T { this.f() return this } 

Заметим, что f является функцией расширения. Таким образом вы можете ссылаться на методы на своем объекте, используя неявные ссылки. Вот пример, взятый из моего проекта libGDX:

 val sprite : Sprite = atlas.createSprite("foo") apply { setSize(SIZE, SIZE) setOrigin(SIZE / 2, SIZE / 2) } 

Конечно, вы также можете вызвать doStuff(this) .

Применить в стандартной библиотеке Kotlin: см. Документы здесь: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html

Его подпись метода:

 inline fun <T> T.apply(f: T.() -> Unit): T (source) 

Вызывает указанную функцию f с этим значением в качестве приемника и возвращает это значение.