Описание тега extension-function

Extension methods enable you to "add" methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type. Extension methods are a special kind of static method, but they are called as if they were instance methods on the extended type. For client code written in C# and Visual Basic, there is no apparent difference between calling an extension method and the methods that are actually defined in a type.
2 ответа

Путаница с пониманием лямбды и приемников

Котлин 1.2.50 Я следил за некоторыми примерами из этого руководства на YouTube https://www.youtube.com/watch?v=gPH9XnvpoXE. И есть несколько вещей, которые я понял, но все еще есть некоторая путаница. Я оставил комментарии в коде ниже, где я не увер…
07 окт '18 в 12:31
2 ответа

Доступ к статической функции расширения из другого класса в Kotlin?

Допустим, у нас есть следующая функция расширения: class Helper { companion object { fun Int.plus(value: String) = Integer.valueOf(value).plus(this) } } Как вы можете получить доступ к plus Функция расширения от Helper класс в другом классе. Есть ли…
10 июн '17 в 17:56
3 ответа

Изменить имя с этого @ на kotlin

У меня есть следующая ситуация, функция расширения с именем save от Marker 1. код fun Marker.save(ctx: Context) { //database is an extension property from Context ctx.database.use { insert("markers", "id" to this@save.id, "latitude" to this@save.pos…
18 июл '18 в 18:18
1 ответ

Kotlin - изменение RequestCreator Пикассо на основе аргументов функции расширения

У меня есть функция расширения для ImageView учебный класс. Я реализовал некоторую логику о том, как загрузить изображение в соответствии с переданными аргументами. Но здесь я застрял. Эти fit(), centerCrop() и т. д. вернуть Пикассо RequestCreator, …
09 янв '19 в 18:06
2 ответа

Сопутствующий объект с функцией расширения в kotlin?

Я хотел бы иметь функцию расширения и использовать logger из kotlin-logging и иметь константы внутри объекта-компаньона. Моя функция: fun String.toFoo(): Foo { logger.debug { "Mapping [$this] to Foo" } if(MY_CONST.equals(this) { ... } Вопрос, где я …
0 ответов

Получение NoClassDefFoundError при вызове функции расширения kotlin

Я использую Android Studio 3.0 Beta 2 Canary Preview и вызываю функцию расширения Kotlin из Java: Код Котлина: fun Metadata.validate(context: Context) { validateInnerList(context) // other validation functions } private fun Metadata.validateInnerLis…
2 ответа

Можно ли вызывать функции расширения "статическим" способом?

Можно ли создать функцию расширения и вызывать ее, как если бы она была статической? Например... fun System.sayByeAndExit() { println("Goodbye!") System.exit() } fun main(args: Array<String>) { System.sayByeAndExit() // I'd like to be able to …
03 сен '16 в 18:30
1 ответ

Функция глобального расширения в котлине

Эй, я хочу создать класс в kotlin, который будет содержать все функции расширения, которые я буду использовать в нескольких местах, например: class DateUtils { //in this case I use jodatime fun Long.toDateTime() : DateTime = DateTime(this) fun Strin…
03 июн '17 в 18:57
4 ответа

Перегрузка операторов + и += для "числовых классов"

Я хочу создать функции расширения для классов, которые инкапсулируют простые Numbers. Например DoubleProperty, Я столкнулся с проблемой, что я не могу перегрузить + и += оператор одновременно. Я не хочу создавать поведение, которое проходит следующи…
3 ответа

Тестирование функций расширения внутри классов

Если мы хотим протестировать функцию расширения для типа, мы можем создать экземпляр этого типа, вызвать функцию и проверить возвращаемое значение. Но как насчет тестирования функций расширения, определенных внутри классов? abstract class AbstractCl…
1 ответ

Kotlin - сделать функцию расширения доступной во всем проекте

У меня есть эта функция расширения в классе: fun Double.round2() : Double { return Math.round((this) * 100.0) / 100.0 } Я хочу повторно использовать эту функцию в другом классе без необходимости дублировать код. Как мне это сделать? Спасибо.
26 ноя '18 в 14:33
2 ответа

Как получить доступ к ученикам с одинаковыми именами в функции расширения в Kotlin Android

Я новичок в Kotlin для Android. и я хочу получить доступ к члену класса с тем же именем в функции расширения. например: var visibility = null //class level variable //EXTENSION FUNCTION fun ProgressBar.changeVisibleState(flag: Boolean) { if (flag) v…
07 сен '17 в 10:30
2 ответа

Разница между kotlin также, применить, позволить, использовать, takeIf и takeUnless в Kotlin

Я прочитал много документов Kotlin об этих пунктах. Но я не могу понять так ясно. Какая польза от Kotlin, позволяющего также взять и взять в деталях? Мне нужен пример каждого элемента. Пожалуйста, не размещайте документацию Kotlin. Мне нужен пример …
09 авг '17 в 06:03
1 ответ

Разница между закрытой функцией расширения верхнего уровня и закрытой функцией расширения внутри класса

В настоящее время мы переключаем наш проект на Kotlin и натолкнулись на следующий вопрос: Нам нужна определенная функция расширения только внутри данного класса. Таким образом, у нас есть две возможности: (1) Объявление функции расширения. private н…
3 ответа

Функция расширения Kotlin с Generic не работает с Any?

Я хочу иметь функцию расширения из класса RealmList: private inline fun RealmList<Any?>.saveAll() { this.forEach { item -> Realm.getDefaultInstance().insert(item!! as RealmModel) } } Но всякий раз, когда я его использую, появляется эта ошиб…
2 ответа

Поле расширения Kotlin для значения SharedPreference по ключу строковой константы

Функции расширения отлично подходят для API SharedPreference в Android. У Джейка Уортона есть интересная реализация во временном коде 32:30 этого видеоурока, где он реализует функцию расширения SharedPreferences следующим образом: preferences.edit{ …
2 ответа

Функция расширения Kotlin

Учитывая это: MyView.setVisibility(View.VISIBLE) можно упростить до этого: inline fun View.setVisible() = apply { visibility = View.VISIBLE } MyView.setVisible() Или это, если вы предпочитаете: inline infix fun View.vis(vis: Int) = apply { visibilit…
07 июл '16 в 15:22
6 ответов

Функции расширения Kotlin

Есть ли возможность использовать функцию расширения с привязкой данных? XML: <data> <import type="my.package.domain.country.model.City.streetName" /> <variable name="city" type="my.package.domain.country.model.City" /> </data&gt…
18 апр '18 в 11:32
2 ответа

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

Я очень новичок в Kotlin. Я хочу иметь возможность добавить функцию в мой абстрактный класс, поэтому, когда я определю эту функцию, я смогу вызывать ее для каждого ребенка из этого класса (они наследуют абстрактный класс) Однако я хочу определить эт…
02 окт '17 в 10:42
3 ответа

Функции контекста Kotlin с запуском расширения

Из того, что я узнал, это похоже на функцию расширения T.run а также with имеют одну и ту же цель создания возможности группировать несколько вызовов для одного и того же объекта, возвращая последний объект лямбды в качестве результата. T.run() имее…
25 янв '18 в 09:13