Kotlin Developer
6.22K subscribers
250 photos
7 videos
343 links
Самый топовый канал по Kotlin

По вопросам сотрудничества и рекламы: @NadikaKir

Мы на бирже: https://telega.in/c/KotlinSenior
Download Telegram
Что такое мульти-декларации (destructuring declarations)?

Мульти-декларации (destructuring declarations или деструктуризирующее присваивание) — это способ извлечения значений из объекта и присвоения их сразу нескольким переменным. В Kotlin этот механизм поддерживается с помощью оператора распаковки (destructuring operator) — componentN(), где N — номер компонента.

При создании data класса Kotlin автоматически создает функции componentN() для каждого свойства класса, где N — номер позиции переменной в конструкторе. Функции componentN() возвращают значения свойств в порядке их объявления в конструкторе. Это позволяет использовать мульти-декларации для распаковки значений свойств и присваивания их отдельным переменным.

Например, если у нас есть data класс Person с двумя свойствами name и age, мы можем использовать мульти-декларации, чтобы извлечь эти свойства и присвоить их двум переменным:

data class Person(val name: String, val age: Int)

val person = Person("Alice", 29)
val (name, age) = person

println(name) // Alice
println(age) // 29

Также можно использовать мульти-декларации в циклах, чтобы итерироваться по спискам объектов и распаковывать значения свойств:


val people = listOf(Person("Alice", 30), Person("Bob", 40))
for ((name, age) in people) {
println("$name is $age years old")
}

// Alice is 30 years old
// Bob is 40 years old


Мульти-декларации также могут быть использованы с массивами и другими коллекциями:

val list = listOf("apple", "banana", "orange")
val (first, second, third) = list

println(first) // apple
println(second) // banana
println(third) // orange
1
🔥 Всё ещё сталкиваетесь с долгими релизами и ручной проверкой кода?

Приглашаем на открытый урок который поможет решить эти вопросы.

🗓 12 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».

На открытом уроке «Почему все переходят на Kotlin? Секреты успешной миграции с Java» мы покажем, как сократить время разработки на 30% и минимизировать риски NullPointerException.
Вы узнаете ключевые отличия Kotlin, пошаговый план миграции без переписывания проекта и лучшие практики корутин для асинхронности.

🦾 Представьте, что каждый новый модуль пишется быстрее, ошибок становится в три раза меньше, а вы получаете бесценный навык для современных бэкенд-проектов.

🔗 Ссылка на регистрацию: https://vk.cc/cOhvng

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Во что компилируется typealias?

Typealias не создает новый тип данных, а только создает псевдоним для существующего типа. При компиляции кода, все typealias заменяются на соответствующий тип, поэтому typealias не приводит к увеличению размера кода.

Например, typealias IntPredicate = (Int) -> Boolean при компиляции будет заменено на (Int) -> Boolean, то есть функцию, принимающую значение типа Int и возвращающую значение типа Boolean.

Можно ли использовать typealias для функциональных типов?

Да, можно использовать typealias для функциональных типов в Kotlin. Например, вы можете создать псевдоним для типа функции, которая принимает два параметра типа Int и возвращает значение типа String, следующим образом:

typealias IntToString = (Int, Int) -> String


Это позволит вам использовать созданный псевдоним вместо полного объявления типа, то есть вместо:

fun processValues(f: (Int, Int) -> String) {
// ...
}


можно использовать:

fun processValues(f: IntToString) {
// ...
}


Как и в случае с другими typealias, компилятор Kotlin просто заменяет псевдоним на соответствующий тип при компиляции кода.
1
🤖 Тест по Flutter проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на курс "Flutter Mobile Developer" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса

За 6 месяцев вы освоите Dart, Flutter и ключевые инструменты разработки, создадите несколько приложений, получите поддержку преподавателей и выполните проект для портфолио.

➡️ ПРОЙТИ ТЕСТ И ОЗНАКОМИТСЯ С ПРОГРАММОЙ: https://vk.cc/cOhCTY

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1
Какие коллекции есть в Kotlin?

Коллекция
— это объект, содержащий в себе набор значений одного или различных типов, а также позволяющий к этим значениям обращаться и извлекать. Другими словами — это контейнер, в который вы можете помещать то, что вам нужно, а затем каким-либо образом с ним взаимодействовать. В Kotlin есть три типа коллекций:

List (список). Упорядоченная коллекция, в которой к элементам можно обращаться по их индексам. Идентичные элементы (дубликаты) могут встречаться в списке более одного раза. Примером списка является предложение: это группа слов, их порядок важен, и они могут повторяться.

Set (множество/набор). Неупорядоченная коллекция без повторяющихся значений. Примером множества является алфавит.

Map (словарь/ассоциативный список). Набор из пар "ключ-значение". Ключи уникальны и каждый из них соответствует ровно одному значению. В коллекции могут присутствовать повторяющиеся значения, но не повторяющиеся ключи. Пример — ID сотрудников и их должностей. Map не является наследником интерфейса Collection.

Два типа интерфейсов, на основе которых создаются коллекции:

1. Неизменяемый (read-only) — дают доступ только для чтения (Set, List, Map, Collection).

2. Изменяемый (mutable) — расширяет предыдущий интерфейс и дополнительно даёт доступ к операциям добавления, удаления и обновления элементов коллекции (
MutableSet, MutableList, MutableMap, MutableCollection).
1
👩‍💻 Как создать свой собственный оператор Flow и использовать его в архитектуре приложения?

🗓 12 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Android Developer. Professional».

На открытом уроке вы научитесь писать свой собственный оператор Flow с нуля. Мы разберём, как интегрировать оператор в архитектуру приложения, а также научимся строить архитектуру для гибкости и масштабируемости.

Этот урок идеально подойдёт разработчикам уровня junior и выше, стремящимся углубить знания и научиться эффективно использовать Flow в своих проектах.

🔗 Ссылка на регистрацию: https://vk.cc/cOkUkT

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Промежуточные (intermediate) и терминальные (terminal) операции в Sequences

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

Операции над Sequence можно разделить на две категории: промежуточные (intermediate) и терминальные (terminal).

Промежуточные операции (intermediate) — это операции, которые возвращают новую Sequence.

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

filter(predicate: (T) -> Boolean): фильтрует элементы по заданному условию и возвращает новую Sequence

map(transform: (T) -> R): преобразует каждый элемент в новый элемент типа R и возвращает новую Sequence

sortedBy(selector: (T) -> R?): сортирует элементы по заданному ключу и возвращает новую Sequence

Терминальные операции (terminal) — это операции, которые выполняются немедленно и возвращают результат (не Sequence).

Терминальные операции могут быть вызваны только после всех промежуточных операций, так как они завершают последовательность и начинают вычисление результатов на основе всей последовательности, полученной после выполнения всех промежуточных операций. Если же терминальная операция вызывается до выполнения всех промежуточных операций, то она не будет иметь доступа к полной последовательности и вернет неполный результат. Примеры:

toList(): преобразует Sequence в список

toSet(): преобразует Sequence в множество

count(): возвращает количество элементов в Sequence

forEach(action: (T) -> Unit): выполняет действие для каждого элемента Sequence

ВАЖНО: вычисления запускаются только при вызове терминальной функции (до этого момента никаких вычислений не производится).
1
🚙 Как Flutter работает в автомобильной электронике и IoT-устройствах?

➡️ Присоединяйтесь к открытому вебинару «Flutter в Automotive & Embedded: создаём приложение для автомобиля» 12 августа в 20:00 МСК. На уроке разберем:
— Создание Yocto-сборок с Flutter для embedded Linux и ARM.
— Запуск Flutter без X11, прямо в framebuffer, для минимальных ресурсов.
— Разработку multi-display интерфейсов для автомобилей: кластер, HUD, мультимедиа.
— Интеграцию с CAN-шиной для работы с реальными данными автомобиля.

❗️ Этот урок — отличный тест-драйв курса «Flutter Mobile Developer» от OTUS.

🔴 Записаться на вебинар → https://vk.cc/cOu6GL

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1
👩‍💻 Strikt — это библиотека для Kotlin, предназначенная для использования с тестовыми фреймворками, такими как JUnit и Spek.

Она использует fluent API, что упрощает построение простых и безопасных тестов с помощью Kotlin-расширений.

🌟 Strikt поддерживает интеграции с библиотеками Arrow, Jackson, MockK и Spring, что делает её гибким инструментом для тестирования различных типов данных и компонентов

🖥 GitHub

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🔥 Нововведения Kotlin 1.9-2.2 для JVM

Приглашаем на открытый урок.

🗓 19 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Kotlin Backend Developer. Professional».

На вебинаре мы рассмотрим:
- изменения в enum
- data objects и data class
- JvmDefault
- компилятор K2
- guard conditions
- break and continue в лямбдах
- multi-dollar string interpolation
- context parameters
- context-sensitive resolution
- @ all

🔗 Ссылка на регистрацию: https://vk.cc/cOvCHG

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Шаблон приложения Kotlin Multiplatform

🌟 Базовый шаблон приложения Kotlin Multiplatform для Android и iOS. Он включает общую бизнес-логику и обработку данных, а также реализацию общего пользовательского интерфейса с использованием Compose Multiplatform

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Пройди тест для Android-разработчиков и проверь свои знания, готов ли ты к обучению на курсе.

🦾 Ответишь — пройдешь на продвинутый курс "Android Developer. Professional " от OTUS.

За 5 месяцев обучения ты освоишь:
✔️ Проектирование архитектуры: Clean Architecture, MV*, многомодульные приложения и профессиональное использование DI.
✔️ Современный стек: Kotlin, Jetpack Compose, Coroutines/Flow, Dagger 2/Hilt, Gradle.
✔️ Разработку кросс-платформенных приложений с использованием Kotlin Multiplatform.
✔️ Глубокое понимание Android SDK: оптимизация, безопасность и производительность приложений.
✔️ Организацию инфраструктуры: CI/CD, Docker, линтеры, автоматизация сборки и мониторинг.
✔️ Написание надежных тестов: интеграционные, UI-тесты и работа с фреймворками.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cOzhtp

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👩‍💻 Koin — это лёгкий и прагматичный фреймворк для внедрения зависимостей (Dependency Injection) на языке Kotlin!

🌟 Он поддерживает как Kotlin Multiplatform, так и Android. Koin предоставляет удобный DSL для настройки зависимостей, минимизирует избыточность кода и интегрируется с различными экосистемами, включая Jetpack Compose и Ktor.

🔐 Лицензия: Apache-2.0

🖥 Github

@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1