Articles of методы расширения

Kotlin: Как дочерний класс может использовать функцию расширения родителя в вызове супер-конструктора?

Как дочерний класс может использовать функцию расширения родителя в поле лямбда? Рассмотрим этот родительский класс: abstract class Parent(val field: Int.() -> Any) { fun Int.print() = println(this) } И этот ребенок: class Child : Parent({ print() // DOESN'T COMPILE this.print() // DOESN'T COMPILE 5.print() // DOESN'T COMPILE val value = 5 value.print() // DOESN'T COMPILE […]

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

В проекте, над которым я работаю, я обнаружил, что написал несколько методов расширения для некоторых типов, чтобы вернуть значение по умолчанию, если опция имеет значение null. Например, у меня может быть Boolean? объект, и я хочу использовать его в условном выражении по умолчанию false, поэтому я бы написал: if (myOptional?.default(false)) { .. } Я написал […]

У меня есть два метода расширения Kotlin для одного и того же класса, но с разными генерическими сигнатурами и компилятор жалуется

Я пишу две функции расширения для одного и того же класса: class Something<T:Any> { … } Они похожи: fun Something<Int>.toJson(): String = … fun Something<Double>.toJson(): String = … И приводит к ошибке компилятора: Kotlin: конфликт объявления платформы: следующие объявления имеют одну и ту же подпись JVM Как я могу создать две функции расширения с различной […]