Расширения - одна из самых крутых функций в Kotlin, поскольку они предоставляют возможность расширять класс с помощью новых функций, даже не наследуя этот класс!
Помните, как мы это делали, используя другие языки программирования, которые не поддерживают расширения, наследуя класс или используя шаблоны проектирования, такие как Decorator, но расширения будут сокращать написание этого шаблонного кода, определяя только функции, сегодня мы будем поговорим об общих расширениях в Котлине.
1- IsNull
Обычно это то, как мы проверяем допустимость значения NULL.
if (something == null){}
Давайте сделаем это более законным, используя расширения Kotlin.
fun Any?.isNull() = this == null
Итак, наш код будет таким, как это круто!
if (something.isNull()){}
2- Сумма цены
Вот расширение для форматирования строки в десятичный формат, мы можем перегрузить это расширение и использовать его с Double или Long.
допустим, у нас есть приложение для электронной коммерции, и у каждого продукта своя цена, поэтому эти расширения помогут нам отформатировать цену по желаемому шаблону.
поэтому его использование будет:
println("11".toPriceAmount()) println("05".toPriceAmount()) println(12.0.toPriceAmount())
И вывод:
11.00 5.00 12.00
3- Формат даты
Что мы делали, так это создавали класс utils для формата даты, люди могут спорить со мной по этому поводу, но ИМХО, создание расширения для формата даты сделает код чище.
Итак, допустим, у нас есть приложение для создания заметок, поэтому в каждой заметке также отображается дата, когда она была сделана, мы можем преобразовать эту дату в UnixTime и сохранить ее в базе данных.
Использование этого:
val currentTime = System.currentTimeMillis() println(currentTime.getTimeStamp()) println(currentTime.getYearMonthDay()) println("2020-09-20".getDateUnixTime())
Выход:
Sunday, September 20, 2020 - 10:48:26 AM 2020-09-20 1600549200000
4- ObjectSerializer
На самом деле это одно из моих любимых расширений, потому что оно показывает мощь расширений Kotlin, которые должны создавать расширение для интерфейса, да, любой класс, реализующий этот интерфейс, может использовать это расширение.
Допустим, у нас есть приложение для карточек, поэтому нам нужно экспортировать карточки, чтобы отправить их другу или восстановить их позже, этот ObjectSerializer поможет нам сериализовать карточки в String или ByteArray, чтобы мы могли сохранить их в файле и восстановить. их позже, используя расширение десериализации.
В приведенном ниже коде мы видим, что можем сериализовать каждый класс, реализующий Serializable, речь не идет конкретно об этом случае, но представьте, как это поможет нам, если мы применим его к чему-то большему :)
Использование этого:
val kotlinExtention = "Kotlin Extensions ObjectSerializer" val serializedString = kotlinExtention.serialize() println(serializedString) println(serializedString.deserialize() as String)
Выход:
kmonaaafheaaccelgphegmgjgocaefhihegfgohdgjgpgohdcaepgcgkgfgdhefdgfhcgjgbgmgjhkgfhc Kotlin Extensions ObjectSerializer
Вы можете найти полную версию файла здесь:
5- Общие функции расширения
В этом у нас будет сила универсального, создав расширение, которое принимает универсальный тип, мы можем применить его для каждого класса, расширяющего или реализующего этот универсальный.
Это очень полезно, когда мы хотим отредактировать стороннюю библиотеку или API, поэтому вместо наследования этого класса мы можем использовать расширения, которые помогут нам сократить этот шаблонный код.
Итак, если у нас есть приложение, и нам нужно найти имя чего-либо, используя это расширение, чтобы установить список имен для адаптера AutoCompleteTextView, или даже если нам нужно скопировать список имен после выбора RandomNames, это поможет нам получить Назовите список и сохраните его в буфере обмена.
В приведенном ниже примере я создал класс Student, который расширяет User, и наше расширение выводит список имен.
Использование этого:
Выход:
[Kotlin, Alex, Mohammed]
Итак, это то, что у нас есть для этой статьи, спасибо за чтение, и я надеюсь, что вам понравилось, и вы будете использовать некоторые из них в своих приложениях.
Следите за обновлениями, и следующая статья будет о расширениях Android Kotlin Extensions.