Промежуточные (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
ВАЖНО: вычисления запускаются только при вызове терминальной функции (до этого момента никаких вычислений не производится).
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
Она использует
fluent API, что упрощает построение простых и безопасных тестов с помощью Kotlin-расширений.Arrow, Jackson, MockK и Spring, что делает её гибким инструментом для тестирования различных типов данных и компонентов@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Ok) и ошибку (Err), избегая исключений и null-значений. Проект имеет zero-overhead реализацию через inline-классы и поддержку корутин. Подходит для проектов, где важна предсказуемость и читаемость кода обработки ошибок.
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Библиотека предлагает идиоматичный Kotlin API для атомарных операций, который затем трансформируется в эффективный код для каждой целевой платформы. Поддерживаются атомарные массивы, пользовательские расширения и даже примитивы синхронизации.
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Митап по мобильной разработке в Санкт-Петербурге!⚡️
👉Когда — 4 сентября
👉Во сколько — 18:00
👉Где — Санкт-Петербург, БЦ Атлантик Сити
Что обсудим?
1️⃣ «Кастомная сериализация с помощью kotlinx.serialization» Антон Николаев (в android-разработке с 2020, сейчас — в онлайн-кинотеатре Okko в команде «Молодость»)
2️⃣«Уменьшение ошибок видеоплеера на Android» Егор Баженов (Android-разработчик VK, аспирант университета ИТМО)
3️⃣ Воркшоп «Шейдерные анимации в Android на OpenGL, Vulkan и AGSL» Александр Верещагин (Android-разработчик в команде VK Музыки)
4️⃣ Воркшоп «Зачем CI/CD мобильным разработчикам?» Владислав Рябчевский (Автоматика-Сервис)
Митап проводится совместно с Okko TechTeam. Встреча бесплатная, но необходима предварительная регистрация📍
Приходите за разбором реальных кейсов, плодотворным нетворкингом и полезными навыками!
👉Зарегистрироваться👈
👉Когда — 4 сентября
👉Во сколько — 18:00
👉Где — Санкт-Петербург, БЦ Атлантик Сити
Что обсудим?
1️⃣ «Кастомная сериализация с помощью kotlinx.serialization» Антон Николаев (в android-разработке с 2020, сейчас — в онлайн-кинотеатре Okko в команде «Молодость»)
Разберём что такое json schema, и как мы используем ее для формирования ответов от бекенда; неудобство работы с json schema; библиотеку kotlinx.serialization, и как мы используем ее для упрощения работы с json schema
2️⃣«Уменьшение ошибок видеоплеера на Android» Егор Баженов (Android-разработчик VK, аспирант университета ИТМО)
Разберём частые ошибки воспроизведения видео на Android и способы их исправления через плеер или бэкенд. Полезно для разработчиков на ExoPlayer: доработки команды Егора сократили ошибки в 5 раз.
3️⃣ Воркшоп «Шейдерные анимации в Android на OpenGL, Vulkan и AGSL» Александр Верещагин (Android-разработчик в команде VK Музыки)
Сравним три подхода к шейдерам в Android: классический OpenGL, высокопроизводительный Vulkan и AGSL из Android 13. Разберём их сильные и слабые сторон
4️⃣ Воркшоп «Зачем CI/CD мобильным разработчикам?» Владислав Рябчевский (Автоматика-Сервис)
Практический воркшоп по CI/CD: разберём российские аналоги, соберём пайплайн для Aurora OS и научимся настраивать его в своих проектах.
Митап проводится совместно с Okko TechTeam. Встреча бесплатная, но необходима предварительная регистрация📍
Приходите за разбором реальных кейсов, плодотворным нетворкингом и полезными навыками!
👉Зарегистрироваться👈
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
📱System Design в мобильной разработке — это про архитектуру, которая выходит за рамки экранов и навигации.
Чтобы приложения масштабировались, выдерживали нагрузку и не ломались при росте — нужен системный подход.
Как выстроить его на практике? Подробно обсудим это на Podlodka Android Crew, 15-19 сентября.
В программе:
🧩 Бинарная совместимость: где с ней сталкиваются мобильные разработчики и какие ошибки чаще всего приводят к проблемам. (Абакар Магомедов, Альфа-Банк)
🏗️ Мобильный архитектор: какие решения он принимает и почему без этой роли сложно развивать сложные приложения. (Эдуард Некрутов, Blink)
⚙️ Dependency Injection в KMP: обзор фреймворков и разбор, как выбрать подходящее решение под проект. (Александр Власюк, РайффайзенБанк)
⚡️BDUI в Android: опыт от DivKit, Beduin и Duit. Как перестать хардкодить экраны и ускорить эксперименты, чтобы быстрее проверять гипотезы.
🔗 Подключайся — будет полезно
По промокоду для подписчиков скидка 500 р:android_crew_14_8zleHF
Чтобы приложения масштабировались, выдерживали нагрузку и не ломались при росте — нужен системный подход.
Как выстроить его на практике? Подробно обсудим это на Podlodka Android Crew, 15-19 сентября.
В программе:
🧩 Бинарная совместимость: где с ней сталкиваются мобильные разработчики и какие ошибки чаще всего приводят к проблемам. (Абакар Магомедов, Альфа-Банк)
🏗️ Мобильный архитектор: какие решения он принимает и почему без этой роли сложно развивать сложные приложения. (Эдуард Некрутов, Blink)
⚙️ Dependency Injection в KMP: обзор фреймворков и разбор, как выбрать подходящее решение под проект. (Александр Власюк, РайффайзенБанк)
⚡️BDUI в Android: опыт от DivKit, Beduin и Duit. Как перестать хардкодить экраны и ускорить эксперименты, чтобы быстрее проверять гипотезы.
🔗 Подключайся — будет полезно
По промокоду для подписчиков скидка 500 р:
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
Зовём на 2ХАКАТОН от 2ГИС
4–5 октября, офлайн, Москва
Два дня, чтобы общаться, кодить, вдохновляться и менять городские сервисы к лучшему!
Три трека: городские данные с ЦОДД, инклюзия с фондами «Антон тут рядом», «Продвижение», «ЛизаАлерт» и носимые устройства — часы, браслеты, AR и другие гаджеты.
Призовой фонд: 1 000 000 рублей
и шанс, что проект попадёт прямо в 2ГИС!
Регистрируйся с командой от 3 до 6 человек или соло — поможем найти команду в чате!
Реклама. ООО 'ДУБЛЬГИС', ИНН 5405276278, Erid: 2VSb5wynAim
4–5 октября, офлайн, Москва
Два дня, чтобы общаться, кодить, вдохновляться и менять городские сервисы к лучшему!
Три трека: городские данные с ЦОДД, инклюзия с фондами «Антон тут рядом», «Продвижение», «ЛизаАлерт» и носимые устройства — часы, браслеты, AR и другие гаджеты.
Призовой фонд: 1 000 000 рублей
и шанс, что проект попадёт прямо в 2ГИС!
Регистрируйся с командой от 3 до 6 человек или соло — поможем найти команду в чате!
Реклама. ООО 'ДУБЛЬГИС', ИНН 5405276278, Erid: 2VSb5wynAim
1
This media is not supported in your browser
VIEW IN TELEGRAM
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
1
@KotlinSenior #kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1