Articles of extension methods

Как объявить параметр расширения для общих помощников перечислений

Я хотел бы иметь .MAX на общих перечислениях для представления значений. Я попытался немного поиграть, но я не мог понять. Когда я пишу, например, это: val Enum.Companion.MAX get() = enumValues().size Он жалуется на enumValues() что Ошибка вывода типа: недостаточно информации для вывода параметра T в inline fun> enumValues ​​(): Array Пожалуйста, укажите это явно. Это […]

Как извлечь часть кода в локальные переменные в Kotlin при использовании построителя HTML Ktor?

Я пытаюсь понять HTML-конструктор в Kotlin / Ktor. В примере здесь используется построитель HTML для построения результата: call.respondHtml { head { title { +"HTML Application" } } body { h1 { +"Sample application with HTML builders" } widget { +"Widgets are just functions" } } } Я пытаюсь извлечь тело в переменную следующим образом: val […]

Метод расширения Kotlin как псевдоним для длинного имени метода?

Я работаю в Kotlin, используя объект библиотеки Kotlin-native, содержащий метод, который .nameIsMuchTooLongAndIsStillNotClear . Подобно typealias , я хочу создать псевдоним метода, поэтому я могу ссылаться на него как на нечто .shortAndClear . Чтобы усложнить ситуацию, эти функции имеют несколько параметров, многие из которых имеют значения по умолчанию, которые я бы предпочел не предварительно обрабатывать в […]

Есть ли чистый способ использования методов расширения Groovy в Котлине?

Например, Groovy позволяет получить текст файла, представленный java.nio.file.Path следующим образом: // Groovy code import java.nio.file.Path import java.nio.file.Paths Path p = Paths.get("data.txt") String text = p.text Я хотел бы иметь возможность повторно использовать метод расширения text Groovy в Котлине. Обратите внимание : я знаю, что у Котлина есть связанный метод для этого конкретного случая. Тем не […]

Попытка использования ресурсов в Котлине

Когда я попытался написать эквивалент кода try-with-resources в Котлине, это не сработало для меня. Я пробовал разные варианты: try (writer = OutputStreamWriter(r.getOutputStream())) { // … } Но никто не работает. Кто-нибудь знает, что следует использовать вместо этого? По-видимому, грамматика Котлина не имеет определения для такой конструкции, но может быть, я чего-то не хватает. Он определяет […]