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

Оригинал!

Одной из самых классных особенностей Kotlin являются расширения. Они позволяют дополнить функционал существующего класса не наследуя его и не затрагивая его код.

Ранее, в языках, которые не имеют подобного функционала, для достижения того же мы использовали паттерн Decorator. Но расширения освобождают от шаблонного кода, позволяя определять сразу конкретные функции. И сегодня мы именно о них и поговорим!

1. IsNull для Kotlin

Как мы обычно делаем проверку на null?

А теперь добавим расширение Kotlin.

И теперь наш код будет выглядеть куда симпатичнее!

2. Округляем цену

Вот вам еще одно расширение, которое будет форматировать строку подходящий десятичный формат. Также мы можем перегрузить эту функцию и для Double или Long.

Допустим у нас есть торговое приложение, и каждый продукт имеет свою собственную цену.  Тогда это расширение позволит легко отформатировать цены к общему желаемому шаблону.

Применить это можно так:

3. Форматирование дат

Еще один пример, который поможет сделать код чище.

Скажем, у нас есть приложение-блокнот. Понятное дело, что нам нужно отображать дату под каждой созданной записью, а ещё мы можем преобразовать дату в формат UnitTime и загрузить её в базу данных.

Использование:

Результат:

4. ObjectSerializer

На самом деле моё любимое расширение, ведь оно показывает всю мощь расширений Kotlin, который позволяет вам расширять интерфейсы! И да, все наследующие это расширение классы тоже смогут использовать эту функцию.

Допустим у нас есть приложение с карточками и нам нужно экспортировать их чтобы отправить другу или восстановить их позже. В этом нам и поможет ObjectSerializer. Сперва мы можем их сериализовать карточки в String или ByteArray, чтобы сохранить их в файле и восстановить позже, используя расширение deserialize.

В примере ниже можно увидеть, что мы сможем сериализовать каждый класс, который наследует Serializable. Но вся прелесть этого отображена не конкретно в этом примере, просто представьте, что это можно применить и с чем-то большим 😊

Использование:

Результат:

Вот полная версия показанного выше кода:

5. Расширение дженериков (обобщений)

В этот раз мы еще и получим всю мощь дженериков. Создавая расширение, которое использует дженерик – мы сможем применить его к любому наследующему его классу.

Это очень удобно если нам нужно отредактировать какую-либо стороннюю библиотеку или API. Так что вместо наследования класса мы можем просто расширить его, что поможет сократить уйму шаблонного кода.

К примеру, если нам нужно найти чьё-то имя в списке или даже скопировать список имён, то это расширение поможет нам легко создать такой список.

В примере ниже я создал класс Student, который наследует класс User, и наше расширение будет собирать их имена.

Применение:

И вывод:

На этом всё! Спасибо за внимание, надеюсь вам понравилось и что-то вы примените и в своих проектах.

Интересен Kotlin? Посмотрите что у нас есть на эту тему!

Добавить комментарий