Пару слов о полях и свойствах в Kotlin
Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить поле. Все — свойства! Однако, во избежании путаницы, я предпочитаю разделять определения полей и свойств на следующей основе — полями являются приватные переменные-члены класса. Это то, для чего выделена память. Свойствами являются публичные или защищенные (protected) функциями геттеры и сеттеры, которые позволяют вам получить доступ к приватным полям.
Я считаю хорошей идеей разграничивать эти понятия таким образом, потому что это способствует моему пониманию, а также упрощает объяснение связанных с этим вещей.
Читать статью
Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить поле. Все — свойства! Однако, во избежании путаницы, я предпочитаю разделять определения полей и свойств на следующей основе — полями являются приватные переменные-члены класса. Это то, для чего выделена память. Свойствами являются публичные или защищенные (protected) функциями геттеры и сеттеры, которые позволяют вам получить доступ к приватным полям.
Я считаю хорошей идеей разграничивать эти понятия таким образом, потому что это способствует моему пониманию, а также упрощает объяснение связанных с этим вещей.
Читать статью
Teletype
Пару слов о полях и свойствах в Kotlin
Терминология свойств и полей в Kotlin может немного сбивать с толку, потому что технически в Kotlin нет полей. Вы не можете объявить...
📱 Хочешь быть в курсе последних технологических инноваций и интернет трендов? Присоединяйся к reposted прямо сейчас!
У нас:
🌪️ Горячие новости из мира технологий и интернета;
🌪️ Интересное о будущем технологий и нейросетей;
🌪️ Эксклюзивные посты про IT-и медиа.
💥 Держи руку на пульсе трендов вместе с reposted
У нас:
🌪️ Горячие новости из мира технологий и интернета;
🌪️ Интересное о будущем технологий и нейросетей;
🌪️ Эксклюзивные посты про IT-и медиа.
💥 Держи руку на пульсе трендов вместе с reposted
Kotlin вместо bash. Прокачиваем автоматизацию на сервере
Для решения задач автоматизации рутинных процессов для системных администраторов и DevOps чаще всего используются или bash-сценарии или python. Первое решение косвенно используется и в описании Dockerfile, поскольку сценарий исполняемых команд принципиально ничем не отличается от запуска скрипта в какой-либо shell, второй подход чаще ассоциируется с автоматизацией, связанных с взаимодействием с хранилищами данных. Но несправедливо было бы обойти стороной возможность создания исполняемых сценариев на языке Kotlin, которые могут стать полноценной заменой bash-сценариям.
В этой статье мы рассмотрим несколько примеров использования Kotlin Scripting (KTS) для автоматизации в распределенной системе, будем использовать долгоживущие скрипты с ожиданием заданий через RabbitMQ, а также поработаем с файловой системой, внешними сервисами, а также попробуем использовать KTS для сборки Docker-контейнеров.
Читать статью
Для решения задач автоматизации рутинных процессов для системных администраторов и DevOps чаще всего используются или bash-сценарии или python. Первое решение косвенно используется и в описании Dockerfile, поскольку сценарий исполняемых команд принципиально ничем не отличается от запуска скрипта в какой-либо shell, второй подход чаще ассоциируется с автоматизацией, связанных с взаимодействием с хранилищами данных. Но несправедливо было бы обойти стороной возможность создания исполняемых сценариев на языке Kotlin, которые могут стать полноценной заменой bash-сценариям.
В этой статье мы рассмотрим несколько примеров использования Kotlin Scripting (KTS) для автоматизации в распределенной системе, будем использовать долгоживущие скрипты с ожиданием заданий через RabbitMQ, а также поработаем с файловой системой, внешними сервисами, а также попробуем использовать KTS для сборки Docker-контейнеров.
Читать статью
Teletype
Kotlin вместо bash. Прокачиваем автоматизацию на сервере
Для решения задач автоматизации рутинных процессов для системных администраторов и DevOps (которые, кроме всего прочего, нередко...
⚡️Хакатон "Умный помощник для тендеров"
Присоединяйтесь к участию в соревновании и станьте частью комьюнити Федерации спортивного программирования, объединяющей талантливых специалистов и спортсменов!
🚀Что дает участие?
1. Карьерные преимущества.
2. Поддержка и развитие.
3. Призовой фонд — 200 000 рублей.
4. Комьюнити спортсменов.
👨💻К участию приглашаются:
- Студенческие команды в составе от 3х до 5ти человек;
- Обучающиеся технических специальностей;
- IT-специалисты;
- Заинтересованные представители регионов Российской Федерации.
📅Дата проведения: 23 - 25 марта
📍Формат: Онлайн/Офлайн в г. Москва
Подробная информация и регистрация: https://tglink.io/589439577d3e?erid=LjN8K74Ej
Присоединяйтесь к участию в соревновании и станьте частью комьюнити Федерации спортивного программирования, объединяющей талантливых специалистов и спортсменов!
🚀Что дает участие?
1. Карьерные преимущества.
2. Поддержка и развитие.
3. Призовой фонд — 200 000 рублей.
4. Комьюнити спортсменов.
👨💻К участию приглашаются:
- Студенческие команды в составе от 3х до 5ти человек;
- Обучающиеся технических специальностей;
- IT-специалисты;
- Заинтересованные представители регионов Российской Федерации.
📅Дата проведения: 23 - 25 марта
📍Формат: Онлайн/Офлайн в г. Москва
Подробная информация и регистрация: https://tglink.io/589439577d3e?erid=LjN8K74Ej
Что такое мульти-декларации (destructuring declarations)?
Мульти-декларации (destructuring declarations или деструктуризирующее присваивание) — это способ извлечения значений из объекта и присвоения их сразу нескольким переменным. В Kotlin этот механизм поддерживается с помощью оператора распаковки (destructuring operator) — componentN(), где N — номер компонента.
При создании data класса Kotlin автоматически создает функции componentN() для каждого свойства класса, где N — номер позиции переменной в конструкторе. Функции componentN() возвращают значения свойств в порядке их объявления в конструкторе. Это позволяет использовать мульти-декларации для распаковки значений свойств и присваивания их отдельным переменным.
Например, если у нас есть data класс Person с двумя свойствами name и age, мы можем использовать мульти-декларации, чтобы извлечь эти свойства и присвоить их двум переменным:
Мульти-декларации (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
🤖 Разбираешься в Android разработке? - Проверь себя, пройди тест!
Хочешь расти дальше и создавать быстрые, оптимизированные приложения для Android - тогда наш курс для тебя!
Пройди тест из 20 вопросов и проверь свои знания. Сможешь сдать — пройдёшь на продвинутый курс "Android Developer. Professional " от OTUS по специальной цене.
Возможна оплата курса в рассрочку
👉 ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Хочешь расти дальше и создавать быстрые, оптимизированные приложения для Android - тогда наш курс для тебя!
Пройди тест из 20 вопросов и проверь свои знания. Сможешь сдать — пройдёшь на продвинутый курс "Android Developer. Professional " от OTUS по специальной цене.
Возможна оплата курса в рассрочку
👉 ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Строим мосты: подключение зависимостей с Cocoapods в Kotlin Multiplatform Mobile
При создании КММ проекта Android Studio предоставляет разработчику выбор между использованием Regular Framework и Cocoapods Dependency Manager для добавления iOS-специфических библиотек, который может быть крайне неочевидным на первый взгляд, ведь использование Regular Framework кажется затруднительным и не пользуется популярностью в отличие от удобного Cocoapods. В данной статье мы рассмотрим, как интегрировать Cocoapods в разработку, создав небольшое Android приложение.
Читать статью
При создании КММ проекта Android Studio предоставляет разработчику выбор между использованием Regular Framework и Cocoapods Dependency Manager для добавления iOS-специфических библиотек, который может быть крайне неочевидным на первый взгляд, ведь использование Regular Framework кажется затруднительным и не пользуется популярностью в отличие от удобного Cocoapods. В данной статье мы рассмотрим, как интегрировать Cocoapods в разработку, создав небольшое Android приложение.
Читать статью
Teletype
Строим мосты: подключение зависимостей с Cocoapods в Kotlin Multiplatform Mobile
При создании КММ проекта Android Studio предоставляет разработчику выбор между использованием Regular Framework и Cocoapods Dependency...
Как стать Fullstack-разработчиком на JavaScript в 2024?
Освоить необходимый стек технологий под руководством опытных экспертов на онлайн-курсе «Специализация Fullstack developer» от OTUS.
💻 Программа идеально подойдет для начинающих разработчиков, тех, кто хочет перейти на fullstack и тех, кто хочет попасть в IT, но пока не определился с направлением.
На курсе вас ждут:
- живые вебинары с возможностью задать вопросы экспертам;
- много практики и сильные проекты для портфолио;
- поддержка профессионального комьюнити;
- рассрочка на комфортных условиях.
👉 Оставьте заявку прямо сейчас и получите бесплатные уроки, которые помогут ознакомиться с форматом обучения: https://clck.ru/39emSj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Освоить необходимый стек технологий под руководством опытных экспертов на онлайн-курсе «Специализация Fullstack developer» от OTUS.
💻 Программа идеально подойдет для начинающих разработчиков, тех, кто хочет перейти на fullstack и тех, кто хочет попасть в IT, но пока не определился с направлением.
На курсе вас ждут:
- живые вебинары с возможностью задать вопросы экспертам;
- много практики и сильные проекты для портфолио;
- поддержка профессионального комьюнити;
- рассрочка на комфортных условиях.
👉 Оставьте заявку прямо сейчас и получите бесплатные уроки, которые помогут ознакомиться с форматом обучения: https://clck.ru/39emSj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как адаптировать Android-приложение под Huawei
Всем привет! Меня зовут Миша Вассер, я Head of Android в AGIMA. Мы занимаемся разработкой Digital-продуктов для больших и маленьких компаний, в том числе пилим мобильные приложения.
Не так давно — по сравнению со всей историей Android — Huawei выкатил собственную операционную систему и сказал: «Ребята, вот вам новая система, кайфуйте». Многие отнеслись к новой ОС скептически. Остальным пришлось адаптировать под нее свои Android-приложения.
Мы оказались во второй группе. К нам время от времени обращаются с просьбой помочь с адаптацией под Huawei. И мы неплохо в этом вопросе прокачались. Поэтому сейчас расскажу, что надо сделать, чтобы стало хорошо. А покажу всё это на примере крупного ретейлера, с которым мы работаем.
Читать статью
Всем привет! Меня зовут Миша Вассер, я Head of Android в AGIMA. Мы занимаемся разработкой Digital-продуктов для больших и маленьких компаний, в том числе пилим мобильные приложения.
Не так давно — по сравнению со всей историей Android — Huawei выкатил собственную операционную систему и сказал: «Ребята, вот вам новая система, кайфуйте». Многие отнеслись к новой ОС скептически. Остальным пришлось адаптировать под нее свои Android-приложения.
Мы оказались во второй группе. К нам время от времени обращаются с просьбой помочь с адаптацией под Huawei. И мы неплохо в этом вопросе прокачались. Поэтому сейчас расскажу, что надо сделать, чтобы стало хорошо. А покажу всё это на примере крупного ретейлера, с которым мы работаем.
Читать статью
Telegraph
Как адаптировать Android-приложение под Huawei
Всем привет! Меня зовут Миша Вассер, я Head of Android в AGIMA. Мы занимаемся разработкой Digital-продуктов для больших и маленьких компаний, в том числе пилим мобильные приложения. Не так давно — по сравнению со всей историей Android — Huawei выкатил собственную…
🦾 Как развиваться тестировщику?
👉 Наращивать объем знаний и навыков.
Приглашаем на открытый урок «Разработка сервиса для генерации тестовых данных на Spring Framework» в рамках курса «Kotlin QA Engineer» от OTUS
На уроке мы сфокусируемся на разработке сервиса для генерации тестовых данных на базе Spring Framework. Обсудим важность тестовых сервисов в процессе тестирования, создание заглушек и генераторов данных.
На упрощенном примере реализуем сервис для генерации тестовых пользователей и поговорим о внутреннем устройстве Spring Framework.
🔹Основные темы открытого урока:
- Применение тестовых сервисов для тестирования
- Внутреннее устройство Spring Framework
- Разработка Rest API на примере сервиса для генерации тестовых данных
Не упустите возможность погрузиться в мир разработки на Spring Framework и узнать все об основных принципах создания тестовых сервисов!
👉 Регистрация
https://otus.pw/l6im/?erid=LjN8KWzc1
👉 Наращивать объем знаний и навыков.
Приглашаем на открытый урок «Разработка сервиса для генерации тестовых данных на Spring Framework» в рамках курса «Kotlin QA Engineer» от OTUS
На уроке мы сфокусируемся на разработке сервиса для генерации тестовых данных на базе Spring Framework. Обсудим важность тестовых сервисов в процессе тестирования, создание заглушек и генераторов данных.
На упрощенном примере реализуем сервис для генерации тестовых пользователей и поговорим о внутреннем устройстве Spring Framework.
🔹Основные темы открытого урока:
- Применение тестовых сервисов для тестирования
- Внутреннее устройство Spring Framework
- Разработка Rest API на примере сервиса для генерации тестовых данных
Не упустите возможность погрузиться в мир разработки на Spring Framework и узнать все об основных принципах создания тестовых сервисов!
👉 Регистрация
https://otus.pw/l6im/?erid=LjN8KWzc1
Context receivers — новые extension functions
Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в OzonID SDK. Но обо всём по порядку.
Читать статью
Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в OzonID SDK. Но обо всём по порядку.
Читать статью
Teletype
Context receivers — новые extension functions
Думаю, не раскрою большой секрет, что Ozon разработал энное количество мобильных приложений: для покупателей, для продавцов, банк...
📱 Хочешь быть в курсе последних технологических инноваций и интернет трендов? Присоединяйся к reposted прямо сейчас!
У нас:
🌪 Горячие новости из мира технологий и интернета;
🌪 Интересное о будущем технологий и нейросетей;
🌪 Эксклюзивные посты про IT-и медиа.
💥 Держи руку на пульсе трендов вместе с reposted
У нас:
🌪 Горячие новости из мира технологий и интернета;
🌪 Интересное о будущем технологий и нейросетей;
🌪 Эксклюзивные посты про IT-и медиа.
💥 Держи руку на пульсе трендов вместе с reposted
Во что компилируется typealias?
Typealias не создает новый тип данных, а только создает псевдоним для существующего типа. При компиляции кода, все typealias заменяются на соответствующий тип, поэтому typealias не приводит к увеличению размера кода.
Например, typealias IntPredicate = (Int) -> Boolean при компиляции будет заменено на (Int) -> Boolean, то есть функцию, принимающую значение типа Int и возвращающую значение типа Boolean.
Можно ли использовать typealias для функциональных типов?
Да, можно использовать typealias для функциональных типов в Kotlin. Например, вы можете создать псевдоним для типа функции, которая принимает два параметра типа Int и возвращает значение типа String, следующим образом:
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 просто заменяет псевдоним на соответствующий тип при компиляции кода.
// ...
}
#вакансия #job #vacancy #remote #parttime #преподаватель #educator #QA #Kotlin
Время делиться знаниями!
Компания: OTUS – образовательная платформа. За более чем 6 лет работы мы создали более 170 авторских курсов для IT-специалистов разного уровня от Junior до Senior. Практически на каждом нашем курсе есть вступительное тестирование для наших студентов, плюс более 650 преподавателей-практиков из крупнейших компаний. Мы учимся друг у друга, советуемся, помогаем, делимся опытом и обсуждаем новости как в преподавании, так и в IT.
Вакансия: преподаватель онлайн-курса «Kotlin QA Engineer» (интересные темы по программе курса и нагрузку можно выбирать).
Эта вакансия будет интересна разработчикам и инженерам по тестированию на Kotlin c практическим опытом в разработке на Kotlin от 1 года. Можно без опыта преподавания. Мы с удовольствием поможем Вам освоить Best Practices преподавания: для этого у нас есть вводный курс по преподаванию и пробные уроки с методистом.
Преподаватель раскрывает тему урока с помощью теории и примеров из практики.
Условия:
✅ удаленное сотрудничество, занятость part-time.
✅стандартное занятие длится 1,5 часа с 20:00 до 21:30 по МСК.
✅ уроки проводятся в онлайн формате в Zoom.
✅ на занятиях используется презентация с теорией и практические примеры, чтобы раскрыть тему урока.
✅ наши методисты помогают освоить лучшие инструменты и практики преподавания.
Еще Вы сможете:
✅ внести свой вклад в развитие IT
✅ структурировать свой опыт и знания.
✅ развивать личный бренд.
✅ прокачать софт-скиллы.
✅ получать от 4000 до 6000 руб. за один вебинар (полтора часа) + отдельно оплачивается проверка ДЗ и другие активности, в которых можно по желанию участвовать.
Бонусы:
✅ наши курсы со скидкой/бесплатно.
✅ возможность приглашать в свою команду на работу лучших выпускников.
✅ воркшопы и конференции для наших преподавателей.
Подробнее в telegram: @ElenaAlias
Время делиться знаниями!
Компания: OTUS – образовательная платформа. За более чем 6 лет работы мы создали более 170 авторских курсов для IT-специалистов разного уровня от Junior до Senior. Практически на каждом нашем курсе есть вступительное тестирование для наших студентов, плюс более 650 преподавателей-практиков из крупнейших компаний. Мы учимся друг у друга, советуемся, помогаем, делимся опытом и обсуждаем новости как в преподавании, так и в IT.
Вакансия: преподаватель онлайн-курса «Kotlin QA Engineer» (интересные темы по программе курса и нагрузку можно выбирать).
Эта вакансия будет интересна разработчикам и инженерам по тестированию на Kotlin c практическим опытом в разработке на Kotlin от 1 года. Можно без опыта преподавания. Мы с удовольствием поможем Вам освоить Best Practices преподавания: для этого у нас есть вводный курс по преподаванию и пробные уроки с методистом.
Преподаватель раскрывает тему урока с помощью теории и примеров из практики.
Условия:
✅ удаленное сотрудничество, занятость part-time.
✅стандартное занятие длится 1,5 часа с 20:00 до 21:30 по МСК.
✅ уроки проводятся в онлайн формате в Zoom.
✅ на занятиях используется презентация с теорией и практические примеры, чтобы раскрыть тему урока.
✅ наши методисты помогают освоить лучшие инструменты и практики преподавания.
Еще Вы сможете:
✅ внести свой вклад в развитие IT
✅ структурировать свой опыт и знания.
✅ развивать личный бренд.
✅ прокачать софт-скиллы.
✅ получать от 4000 до 6000 руб. за один вебинар (полтора часа) + отдельно оплачивается проверка ДЗ и другие активности, в которых можно по желанию участвовать.
Бонусы:
✅ наши курсы со скидкой/бесплатно.
✅ возможность приглашать в свою команду на работу лучших выпускников.
✅ воркшопы и конференции для наших преподавателей.
Подробнее в telegram: @ElenaAlias
Otus
О компании OTUS
Наша миссия — делать обучение осмысленным, реализуя взаимосвязь между ожиданиями работодателей, компетенциями специалистов и возможностями преподавателей
Какие коллекции есть в Kotlin?
Коллекция — это объект, содержащий в себе набор значений одного или различных типов, а также позволяющий к этим значениям обращаться и извлекать. Другими словами — это контейнер, в который вы можете помещать то, что вам нужно, а затем каким-либо образом с ним взаимодействовать. В Kotlin есть три типа коллекций:
• List (список). Упорядоченная коллекция, в которой к элементам можно обращаться по их индексам. Идентичные элементы (дубликаты) могут встречаться в списке более одного раза. Примером списка является предложение: это группа слов, их порядок важен, и они могут повторяться.
• Set (множество/набор). Неупорядоченная коллекция без повторяющихся значений. Примером множества является алфавит.
• Map (словарь/ассоциативный список). Набор из пар "ключ-значение". Ключи уникальны и каждый из них соответствует ровно одному значению. В коллекции могут присутствовать повторяющиеся значения, но не повторяющиеся ключи. Пример — ID сотрудников и их должностей. Map не является наследником интерфейса Collection.
Два типа интерфейсов, на основе которых создаются коллекции:
1. Неизменяемый (read-only) — дают доступ только для чтения (Set, List, Map, Collection).
2. Изменяемый (mutable) — расширяет предыдущий интерфейс и дополнительно даёт доступ к операциям добавления, удаления и обновления элементов коллекции (
Коллекция — это объект, содержащий в себе набор значений одного или различных типов, а также позволяющий к этим значениям обращаться и извлекать. Другими словами — это контейнер, в который вы можете помещать то, что вам нужно, а затем каким-либо образом с ним взаимодействовать. В Kotlin есть три типа коллекций:
• List (список). Упорядоченная коллекция, в которой к элементам можно обращаться по их индексам. Идентичные элементы (дубликаты) могут встречаться в списке более одного раза. Примером списка является предложение: это группа слов, их порядок важен, и они могут повторяться.
• Set (множество/набор). Неупорядоченная коллекция без повторяющихся значений. Примером множества является алфавит.
• Map (словарь/ассоциативный список). Набор из пар "ключ-значение". Ключи уникальны и каждый из них соответствует ровно одному значению. В коллекции могут присутствовать повторяющиеся значения, но не повторяющиеся ключи. Пример — ID сотрудников и их должностей. Map не является наследником интерфейса Collection.
Два типа интерфейсов, на основе которых создаются коллекции:
1. Неизменяемый (read-only) — дают доступ только для чтения (Set, List, Map, Collection).
2. Изменяемый (mutable) — расширяет предыдущий интерфейс и дополнительно даёт доступ к операциям добавления, удаления и обновления элементов коллекции (
MutableSet
, MutableList
, MutableMap
, MutableCollection
).Все, что вам нужно знать о Kotlin Multiplatform
Kotlin Multiplatform — это набор для разработки программного обеспечения, который значительно лучше других вариантов разработки кроссплатформенных приложений. В этом руководстве по Kotlin multiplatform вы подробно узнаете все об этом наборе.
Читать статью
Kotlin Multiplatform — это набор для разработки программного обеспечения, который значительно лучше других вариантов разработки кроссплатформенных приложений. В этом руководстве по Kotlin multiplatform вы подробно узнаете все об этом наборе.
Читать статью
Teletype
Все, что вам нужно знать о Kotlin Multiplatform
Kotlin Multiplatform — это набор для разработки программного обеспечения, который значительно лучше других вариантов разработки...
Стань частью Android-комьюнити Surf
В канале Surf Android Team разработчики приложений «Лабиринт», «Магнит», «Ригла» и других делятся лучшими практиками и больными шишками из опыта работы с Kotlin, Java и нейросетями.
Вот подборка полезных постов из канала:
➡️ Как сделать Lottie-анимации
➡️ Дорожная карта Junior Android-разработчика
➡️ Как реализовать автовставку кода из SMS через SMS User Consent API
Surf активно расширяет Android-комьюнити и ждёт вас в канале, чтобы делиться интересными кейсами и быть на одной волне актуальных технологий.
🟢 Подписывайтесь по ссылке → @surf_android
В канале Surf Android Team разработчики приложений «Лабиринт», «Магнит», «Ригла» и других делятся лучшими практиками и больными шишками из опыта работы с Kotlin, Java и нейросетями.
Вот подборка полезных постов из канала:
Surf активно расширяет Android-комьюнити и ждёт вас в канале, чтобы делиться интересными кейсами и быть на одной волне актуальных технологий.
Please open Telegram to view this post
VIEW IN TELEGRAM
Промежуточные (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
ВАЖНО: вычисления запускаются только при вызове терминальной функции (до этого момента никаких вычислений не производится).
Kotlin: взгляд изнутри — преимущества, недостатки и особенности
Всем привет! На связи Сергей Керенцев, Android-разработчик Студии Олега Чулакова на проектах Сбера.
В данной статье мы углубимся в мир Kotlin, рассмотрим его основные преимущества, недостатки и особенности. Мы обойдем такие важные аспекты, как безопасность работы с null-значениями, гибкость типизации с помощью Generics, возможности расширения функциональности с помощью extension-функций, inline-функции, а также многое другое.
Давайте начнем наше увлекательное путешествие в мир Kotlin и раскроем его потенциал!
Читать статью
Всем привет! На связи Сергей Керенцев, Android-разработчик Студии Олега Чулакова на проектах Сбера.
В данной статье мы углубимся в мир Kotlin, рассмотрим его основные преимущества, недостатки и особенности. Мы обойдем такие важные аспекты, как безопасность работы с null-значениями, гибкость типизации с помощью Generics, возможности расширения функциональности с помощью extension-функций, inline-функции, а также многое другое.
Давайте начнем наше увлекательное путешествие в мир Kotlin и раскроем его потенциал!
Читать статью
Teletype
Kotlin: взгляд изнутри — преимущества, недостатки и особенности
Всем привет! На связи Сергей, Android-разработчик Студии Олега Чулакова на проектах Сбера.
Kotlin Multiplatform в ОС Аврора
В данной статье описана работа ОС Аврора с технологией Kotlin Multiplatform. Рассматривается метод подключения модуля Kotlin Multiplatform к приложению на Qt/QML. Для демонстрации было портировано уже существующие демо приложение "KMM RSS Reader". Проведены тесты производительности.
Читать статью
В данной статье описана работа ОС Аврора с технологией Kotlin Multiplatform. Рассматривается метод подключения модуля Kotlin Multiplatform к приложению на Qt/QML. Для демонстрации было портировано уже существующие демо приложение "KMM RSS Reader". Проведены тесты производительности.
Читать статью
Teletype
Kotlin Multiplatform в ОС Аврора
Kotlin Multiplatform — технология, позволяющая объединять бизнес-логику для приложений разных платформ. В ней доступен полный контроль...