Kotlin Multiplatform Broadcast
9.48K subscribers
833 photos
53 videos
1.12K links
Новости и фичи Kotlin, а также Kotlin Multiplatform

YouTubе канал: https://youtube.com/androidBroadcast
Compose Multiplatform @compose_broadcast
iOS разработка @ios_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Forwarded from Android Broadcast (Кирилл Розов)
Советы по использованию программирования "Code With Me" что прокачать ваши Kotlin навыки

Разбор различных сценариев использования 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
👍57🔥101👏1
Design of Kotlin Coroutines (15 мин)

👉 Разбор того как работают корутины под капотом
👉 Чем suspend функции отличаются от обычных
👉 Continuation Passing Style
👉 State машина корутины

#coroutines
15👍5🤔4
Почему исключения в Kotlin Coroutines это сложно и как с этим жить?

Обработать ошибку в корутинах не так очевидно и просто порой как это описывают авторы. В статье разбираются
👉 разные примеры запуска корутин и обработка ошибок в них
👉 что будет происходить из-за structured concurrency
👉 CoroutineExceptionHandler
👉 Ключевые особенности обработки
🔥25🤔31👍1
Какого ключевого слово нету в Kotlin?
Anonymous Poll
16%
typeof
7%
typealias
39%
alias
38%
dynamic
💯12👍8🤔4🤯2
Kotlin Multiplatform Broadcast
Какого ключевого слово нету в Kotlin?
Правильный ответ - alias

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, который разрешает операцию замены элемента (аналогично как поведение массива)
🔥50👍13🎉2🤔1
How to pause a coroutine (3 мин)

Автор делится специальным Dispatcher, который позволит вам остановить корутину в любой момент

#coroutines
🤔13😁3👍2
Вышел Koin 3.2.2

В новой версии исправили баги ViewModel в Compose, в Android Scope начали депрекейтить API и обновленные базовые проекты.

Уже работают на версии 3.3 в которой будет улучшения Constructor DSL, адаптация нового ViewModel API (2.5), новые фичи для Android Jetpack
🔥21👍7
Dowel - KSP генератор стабовых данных для Compose функций

#compose
👍49
🤔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
🤔10👍5😁1
Exploring "select" expression of Kotlin coroutines

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

В комментариях пишите примеры использования такой функции на практике

#coroutines
👍13🤔8😁1
В Kotlin 1.7.20 можно попробовать Generic Inline Classes. Небольшое улучешние, которое сделае ваш код надежне и позволит компилятору не дать вам сделать ошибки. Фича экпериментальная и пока работает только на Kotlin/JVM

📺 Видео обзор
🔥13👍6😁1🤔1