Ключевое слово reified
reified — это ключевое слово, которое может быть использовано только в inline-функциях. reified позволяет получить информацию о типе generic-параметра во время выполнения программы. В обычном случае, информация о типах стирается и недоступна во время выполнения, но с помощью reified можно сохранять эту информацию и использовать в других частях приложения.
Несколько простых примеров применения:
1. Получить доступ к типу параметра во время выполнения
В этом примере мы определяем функцию printType() с типовым параметром T, который мы указываем с помощью reified. Внутри функции мы можем получить тип T во время выполнения, используя T::class. Затем выводим название типа на экран с помощью simpleName. Когда мы вызываем функцию printType() с типом String или Int, она выводит соответствующий тип на экран.
2. reified вместе с is для проверки типа аргумента во время выполнения
Здесь мы определяем функцию isOfType(), которая принимает значение типа Any и возвращает true, если оно является типом T. Мы используем reified, чтобы получить доступ к типу T во время выполнения. Затем мы используем оператор is для проверки типа значения и возвращаем соответствующее boolean значение.
3. Получить список элементов перечисления
Определяем функцию printEnumValues(), которая выводит список элементов перечисления типа T. Мы применяем reified, чтобы получить доступ к типу T во время выполнения. Затем используем enumValues<T>(), чтобы получить список всех значений перечисления типа T. Внутри цикла выводим каждое значение на экран. Когда мы вызываем функцию printEnumValues() с типом Color, она выводит "RED", "GREEN" и "BLUE" в консоль.
reified — это ключевое слово, которое может быть использовано только в inline-функциях. reified позволяет получить информацию о типе generic-параметра во время выполнения программы. В обычном случае, информация о типах стирается и недоступна во время выполнения, но с помощью reified можно сохранять эту информацию и использовать в других частях приложения.
Несколько простых примеров применения:
1. Получить доступ к типу параметра во время выполнения
fun main() {
printType<String>() // String
printType<Int>() // Int
}
private inline fun <reified T> printType() {
println(T::class.simpleName)
}
В этом примере мы определяем функцию printType() с типовым параметром T, который мы указываем с помощью reified. Внутри функции мы можем получить тип T во время выполнения, используя T::class. Затем выводим название типа на экран с помощью simpleName. Когда мы вызываем функцию printType() с типом String или Int, она выводит соответствующий тип на экран.
2. reified вместе с is для проверки типа аргумента во время выполнения
fun main() {
println(isOfType<Int>(1)) // true
println(isOfType<Int>("Hello")) // false
}
private inline fun <reified T> isOfType(value: Any): Boolean {
return value is T
}
Здесь мы определяем функцию isOfType(), которая принимает значение типа Any и возвращает true, если оно является типом T. Мы используем reified, чтобы получить доступ к типу T во время выполнения. Затем мы используем оператор is для проверки типа значения и возвращаем соответствующее boolean значение.
3. Получить список элементов перечисления
enum class Color { RED, GREEN, BLUE }
fun main() {
printEnumValues<Color>() // RED, GREEN, BLUE
}
private inline fun <reified T : Enum<T>> printEnumValues() {
enumValues<T>().forEach { value ->
println(value)
}
}
Определяем функцию printEnumValues(), которая выводит список элементов перечисления типа T. Мы применяем reified, чтобы получить доступ к типу T во время выполнения. Затем используем enumValues<T>(), чтобы получить список всех значений перечисления типа T. Внутри цикла выводим каждое значение на экран. Когда мы вызываем функцию printEnumValues() с типом Color, она выводит "RED", "GREEN" и "BLUE" в консоль.
This media is not supported in your browser
VIEW IN TELEGRAM
Изучите применение ChatGPT в рабочих целях, чтобы получить от этого прибыль. Сейчас самое время начать использовать искусственный интеллект.
Здесь вы узнаете, почему стоит освоить ChatGPT. Это поможет вам:
- Использовать ChatGPT в вашей профессиональной сфере.
- Предлагать компаниям разработку индивидуально дообученного ChatGPT по заказу.
- Увеличить свой доход, освоив навык создания индивидуально дообученного ChatGPT.
Зарегистрируйтесь на бесплатный вебинар, чтобы узнать больше деталей.
Реклама. ООО "ТЕРРА ЭЙАЙ". ИНН 9728019395. erid: LjN8JwzAY
Здесь вы узнаете, почему стоит освоить ChatGPT. Это поможет вам:
- Использовать ChatGPT в вашей профессиональной сфере.
- Предлагать компаниям разработку индивидуально дообученного ChatGPT по заказу.
- Увеличить свой доход, освоив навык создания индивидуально дообученного ChatGPT.
Зарегистрируйтесь на бесплатный вебинар, чтобы узнать больше деталей.
Реклама. ООО "ТЕРРА ЭЙАЙ". ИНН 9728019395. erid: LjN8JwzAY
—
implementation 'io.github.oshai:kotlin-logging-jvm:5.1.0'
kotlin-logging предоставляет обертку для slf4j-api для использования классами Kotlin; при этом kotlin-logging имеет такие преимущества:
— нет необходимости писать шаблонный код, содержащий имя логгера и класса или имя логгера
— простой способ регистрации сообщений в виде строки с ленивой оценкой с помощью лямбда-выражения
{}
— все предыдущие реализации slf4j по-прежнему могут быть использованы
@KotlinSenior
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
Если вы хотите сократить количество платформенного кода и ресурсы на разработку и поддержку приложения, не спешите этого делать. Леонид Емельянов делится опытом перехода на Kotlin и Compose Multimplatform.
Рассказывает, почему они выбрали именно эти решения, как переходили на новый технологический стек, являясь частью более крупного Android-приложения, и что из всего этого вышло.
Видео по ссылке📺
@KotlinSenior #kotlin
Если вы хотите сократить количество платформенного кода и ресурсы на разработку и поддержку приложения, не спешите этого делать. Леонид Емельянов делится опытом перехода на Kotlin и Compose Multimplatform.
Рассказывает, почему они выбрали именно эти решения, как переходили на новый технологический стек, являясь частью более крупного Android-приложения, и что из всего этого вышло.
Видео по ссылке
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Возможности языка Kotlin в версии 2.0
Обзор улучшений и дополнений в Kotlin 2.0, включая новый движок потока управления и промежуточное представление интерфейса, а также то, как это помогает обеспечить согласованность языка.
Также долгосрочное видение Kotlin, уделив особое внимание тому, как новые языковые функции, такие как параметры контекста, управление сигнатурами и неизменяемость, будут поддерживать современные тенденции разработки программного обеспечения и вызовы, с которыми мы сталкиваемся сегодня в нашей экосистеме.
@KotlinSenior #kotlin
Обзор улучшений и дополнений в Kotlin 2.0, включая новый движок потока управления и промежуточное представление интерфейса, а также то, как это помогает обеспечить согласованность языка.
Также долгосрочное видение Kotlin, уделив особое внимание тому, как новые языковые функции, такие как параметры контекста, управление сигнатурами и неизменяемость, будут поддерживать современные тенденции разработки программного обеспечения и вызовы, с которыми мы сталкиваемся сегодня в нашей экосистеме.
@KotlinSenior #kotlin
YouTube
Kotlin Language Features in 2.0 and Beyond - Michail Zarečenskij
Recording brought to you by American Express. https://americanexpress.io/kotlin-jobs
This talk will provide an overview of the enhancements and additions in Kotlin 2.0, including the new control flow engine and frontend intermediate representation and how…
This talk will provide an overview of the enhancements and additions in Kotlin 2.0, including the new control flow engine and frontend intermediate representation and how…
Хотели бы изучить потенциал Flutter для разработки высокопроизводительных веб-приложений и игр?
Ждём вас на открытом практическом уроке от OTUS, где мы:
▫️рассмотрим новые возможности Flutter 3.22 для запуска с веб;
▫️сделаем небольшую игру для браузера, которая будет дополнительно использовать внешние C++ библиотеки с компиляцией через emscripten;
▫️научимся использовать кастомные шейдеры для графики в веб-приложении и возможности 3D-графики через WebGL (wasm);
▫️разберем не менее важные смежные темы и ответим на все возникающие вопросы.
Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный ментор и преподаватель.
📝 Встречаемся 3 июля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение!
➡️ Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cy4SfD
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Ждём вас на открытом практическом уроке от OTUS, где мы:
▫️рассмотрим новые возможности Flutter 3.22 для запуска с веб;
▫️сделаем небольшую игру для браузера, которая будет дополнительно использовать внешние C++ библиотеки с компиляцией через emscripten;
▫️научимся использовать кастомные шейдеры для графики в веб-приложении и возможности 3D-графики через WebGL (wasm);
▫️разберем не менее важные смежные темы и ответим на все возникающие вопросы.
Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный ментор и преподаватель.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
—
pip install lets-plot
Графики, созданные с помощью lets-plot можно встраивать в JVM (Swing, JavaFX) и Kotlin/JS-приложения.
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
github-workflows-kt поможет писать типобезопасный код на Kotlin для организации надежных рабочих процессов, планирования GitHub Actions и т.д.
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
<dependency>
<groupId>io.github.qdsfdhvh</groupId>
<artifactId>image-loader</artifactId>
<version>1.8.1</version>
</dependency>
Позволяет настраивать пользовательский ImageLoader на каждой платформе и не только
@KotlinSenior
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
dependencies {
testImplementation("io.strikt:strikt-core:<version>")
}
Strikt — это библиотека Kotlin для работы с assertion в тестах;
предназначена для использования с такими компонентами как JUnit, Minutest, Spek или KotlinTest.
Strikt опирается на свободный стиль утверждений, похожий на AssertJ, но не использует сложную иерархию классов для построения утверждений.
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Как сделать Flutter-приложение плавным и отзывчивым?
Хотите научиться писать эффективные и высокопроизводительные приложения для всех платформ? Ждём вас на открытом практическом уроке от OTUS, где мы разберем:
▫️знакомство с DevTools и Perfetto;
▫️добавление контрольных точек через dart:developer;
▫️слои рендеринга на сцене, использование RepaintBoundary;
▫️чем помогает Impeller и когда интерфейс с ним становится быстрее;
▫️фильтры, которые влияют на производительность;
▫️структуру и назначение ServiceExtensions, визуальную пометку потенциально медленных виджетов;
▫️финальный замер производительности после всех оптимизаций.
Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный ментор и преподаватель.
Встречаемся 24 июля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение!
➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок: https://vk.cc/cyra6g
Реклама. ООО «Отус онлайн-образование», ОГРН 117774661857
Хотите научиться писать эффективные и высокопроизводительные приложения для всех платформ? Ждём вас на открытом практическом уроке от OTUS, где мы разберем:
▫️знакомство с DevTools и Perfetto;
▫️добавление контрольных точек через dart:developer;
▫️слои рендеринга на сцене, использование RepaintBoundary;
▫️чем помогает Impeller и когда интерфейс с ним становится быстрее;
▫️фильтры, которые влияют на производительность;
▫️структуру и назначение ServiceExtensions, визуальную пометку потенциально медленных виджетов;
▫️финальный замер производительности после всех оптимизаций.
Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный ментор и преподаватель.
Встречаемся 24 июля в 20:00 мск в преддверии старта курса «Flutter Mobile Developer». Все участники вебинара получат специальную цену на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 117774661857
Please open Telegram to view this post
VIEW IN TELEGRAM
Landscapist обеспечивает загрузку и отрисовку изображений с помощью 3 компонентов: Glide, Coil и Fresco.
Landscapist поддерживает отслеживание состояний загрузки изображений.
Библиотека также предоставляет разные удобные анимации, включая кроссфейды, трансформации размытия и многие другие.
А ещё Landscapist позволяет гибко управлять загрузкой изображений с помощью массы плагинов
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM