Forwarded from Android Broadcast (Кирилл Розов)
Советы по использованию программирования "Code With Me" что прокачать ваши Kotlin навыки
Разбор различных сценариев использования Code With Me для парного программирования в обучении и менторинге
📺 Видео версия (1 час)
Разбор различных сценариев использования Code With Me для парного программирования в обучении и менторинге
📺 Видео версия (1 час)
👎10
Kotlin Multiplatform Broadcast
Какую конструкцию нельзя объявить в Kotlin?
Правильный ответ "val a: String! = b"
Помимо Nullable (?) и Non-Nullable типов в Kotlin есть специальный тип - Platform Type (!). Он предназначен для типа который приходит из другого языка и невозможно определить Nullable и Non-Nullable (например, нет аннотацией с пометкой про nullability). Переменную такого типа можно только получить, но объявить нельзя. С переменной такого типа можно работать как с Nullable и Non-Nullable типом и компилятор не будет предупреждать вас.
Цель типа - обеспечить совместимость с кодом на другом языке.
Рекомендация - при получение такого типа и сохранение его в переменную обязательно явно указывайте тип переменной, чтобы не полагаться на механизм работы с null как в Java.
👉 Nullable types and non-null types
👉 Null-safety and platform types
Цель типа - обеспечить совместимость с кодом на другом языке.
Рекомендация - при получение такого типа и сохранение его в переменную обязательно явно указывайте тип переменной, чтобы не полагаться на механизм работы с null как в Java.
👉 Nullable types and non-null types
👉 Null-safety and platform types
👍57🔥10❤1👏1
Design of Kotlin Coroutines (15 мин)
👉 Разбор того как работают корутины под капотом
👉 Чем suspend функции отличаются от обычных
👉 Continuation Passing Style
👉 State машина корутины
#coroutines
👉 Разбор того как работают корутины под капотом
👉 Чем suspend функции отличаются от обычных
👉 Continuation Passing Style
👉 State машина корутины
#coroutines
❤15👍5🤔4
Почему исключения в Kotlin Coroutines это сложно и как с этим жить?
Обработать ошибку в корутинах не так очевидно и просто порой как это описывают авторы. В статье разбираются
👉 разные примеры запуска корутин и обработка ошибок в них
👉 что будет происходить из-за structured concurrency
👉 CoroutineExceptionHandler
👉 Ключевые особенности обработки
Обработать ошибку в корутинах не так очевидно и просто порой как это описывают авторы. В статье разбираются
👉 разные примеры запуска корутин и обработка ошибок в них
👉 что будет происходить из-за structured concurrency
👉 CoroutineExceptionHandler
👉 Ключевые особенности обработки
🔥25🤔3❤1👍1
💯12👍8🤔4🤯2
Kotlin Multiplatform Broadcast
Какого ключевого слово нету в Kotlin?
Правильный ответ - alias
typeof - ключевое слово, зарезервированное на будущее
typealias - используется для объявления алиасов типов
alias - я выдумал
dynamic - используется в Kotlin/JS. Поэтому многие могли и решить что его нет
Все актуальные ключевые слова здесь
typeof - ключевое слово, зарезервированное на будущее
typealias - используется для объявления алиасов типов
alias - я выдумал
dynamic - используется в Kotlin/JS. Поэтому многие могли и решить что его нет
Все актуальные ключевые слова
👍60🎉4👏1
Объект коллекции, созданный этим способом в Kotlin/JVM 1.7.10, можно модифицировать
Anonymous Poll
22%
emptyList<Int>()
7%
listOf<Int>()
1%
listOf(1)
5%
listOf(1, 2)
65%
Правильного ответа нет
👍10👌4
Kotlin Multiplatform Broadcast
Объект коллекции, созданный этим способом в Kotlin/JVM 1.7.10, можно модифицировать
Правильный ответ - "Правильного ответа нет"
👉 emptyList() создаст коллекцию через Collections.emptyList()
👉 listOf() вызовет emptyList()
👉 listOf(1) использует Collections.singletoneList()
👉 listOf(1, 2) использует конвертацию массива в коллекцию с помощью Arrays.asList()
Все эти коллекции являются неизменяемыми и при попытке любой операции модификации (добавление, удаление, замена) будет ошибка UnsupportedOperationException, за исключением Arrays$ArrayList, который разрешает операцию замены элемента (аналогично как поведение массива)
👉 listOf() вызовет emptyList()
👉 listOf(1) использует Collections.singletoneList()
👉 listOf(1, 2) использует конвертацию массива в коллекцию с помощью Arrays.asList()
Все эти коллекции являются неизменяемыми и при попытке любой операции модификации (добавление, удаление, замена) будет ошибка UnsupportedOperationException, за исключением Arrays$ArrayList, который разрешает операцию замены элемента (аналогично как поведение массива)
🔥50👍13🎉2🤔1
How to pause a coroutine (3 мин)
Автор делится специальным Dispatcher, который позволит вам остановить корутину в любой момент
#coroutines
Автор делится специальным Dispatcher, который позволит вам остановить корутину в любой момент
#coroutines
🤔13😁3👍2
Вышел Kotlin 1.7.20
👉 K2 компилятор стал поддерживать множество компиляторных плагинов
🔥 Новая модель памяти Kotlin/Native теперь стабильная и работают по умолчанию!!! Работать с корутинами в Native теперь намного проще
👉 Поддержка Gradle 7.1
👉 [Preview] оператора ..< для создания открытых интервалов (range)
👉 [JVM Preview] Inline классы с generic типами
📺 Видео версия (11 мин)
📌 Полный список изменений
📌 Release notes GitHub
Подробнее новые фичи разберу в отдельных постах в @kotlin_broadcast
👉 K2 компилятор стал поддерживать множество компиляторных плагинов
🔥 Новая модель памяти Kotlin/Native теперь стабильная и работают по умолчанию!!! Работать с корутинами в Native теперь намного проще
👉 Поддержка Gradle 7.1
👉 [Preview] оператора ..< для создания открытых интервалов (range)
👉 [JVM Preview] Inline классы с generic типами
📺 Видео версия (11 мин)
📌 Полный список изменений
📌 Release notes GitHub
Подробнее новые фичи разберу в отдельных постах в @kotlin_broadcast
👍26🤔2🎉2
Вышел Koin 3.2.2
В новой версии исправили баги ViewModel в Compose, в Android Scope начали депрекейтить API и обновленные базовые проекты.
Уже работают на версии 3.3 в которой будет улучшения Constructor DSL, адаптация нового ViewModel API (2.5), новые фичи для Android Jetpack
В новой версии исправили баги ViewModel в Compose, в Android Scope начали депрекейтить API и обновленные базовые проекты.
Уже работают на версии 3.3 в которой будет улучшения Constructor DSL, адаптация нового ViewModel API (2.5), новые фичи для Android Jetpack
🔥21👍7
👍49
Руководство по реализации таймера с обратным отсчетом на корутинах. Посмотрите как можно интересно играться с Flow
#flow
#flow
🤔40😁5👍1
data object
- новая экспериментальная фича в Kotlin 1.7.20. Фактически это object
с генерацией нормального toString()
. Генерировать equals и hashCode не имеет смысла т.к. object - это singleton.Подробности фичи и как ее подключить здесь
🤯38👍18🤔6
В Kotlin 1.7.20 появился экспериментальный оператор
Подробности фичи и как включить ее здесь
..<
(появится в Kotlin 1.8), который позволит создать открытые интервалы. Он позволит заменить собой функцию until
. Также появился новый интерфейс в стандартной библиотеки для представления OpenEndRangeПодробности фичи и как включить ее здесь
👍33🤔12
The Art of Multiplatform Programming: The Secret to Maximizing Shared Code (14 мин)
Хотите пошарить как можно больше кода, то советы из статьи вам пригодятся. Все просто - описывайте платформенно независимые интерфейсы и делайте их платформенные реализации
Хотите пошарить как можно больше кода, то советы из статьи вам пригодятся. Все просто - описывайте платформенно независимые интерфейсы и делайте их платформенные реализации
🤔3
Mutation Testing in Kotlin
Мутационно тестирование - техника, которая проверяет качество теста, внесением модификаций в код. Если изменения приводят к провалу теста - все у вас хорошо. Статья показывает как это сделать в Kotlin
#testing
Мутационно тестирование - техника, которая проверяет качество теста, внесением модификаций в код. Если изменения приводят к провалу теста - все у вас хорошо. Статья показывает как это сделать в Kotlin
#testing
🤔10👍5😁1
Exploring "select" expression of Kotlin coroutines
select - это специальная функция, которая дожидается результата нескольких suspend функций и возвращает результат первой выполнившейся. В статье разбираются ее подробности и применение
В комментариях пишите примеры использования такой функции на практике
#coroutines
select - это специальная функция, которая дожидается результата нескольких suspend функций и возвращает результат первой выполнившейся. В статье разбираются ее подробности и применение
В комментариях пишите примеры использования такой функции на практике
#coroutines
👍13🤔8😁1
В Kotlin 1.7.20 можно попробовать Generic Inline Classes. Небольшое улучешние, которое сделае ваш код надежне и позволит компилятору не дать вам сделать ошибки. Фича экпериментальная и пока работает только на Kotlin/JVM
📺 Видео обзор
📺 Видео обзор
🔥13👍6😁1🤔1