Какие вспомогательные функции вы знаете или использовали в своем опыте?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
Лямбда-выражения: Сокращают код для небольших функций-обработчиков, например, кликов или колбеков.
-
Extension Functions (Kotlin): Добавляют новые функции к существующим классам без их наследования, улучшая читаемость и удобство.
fun String.isPalindrome(): Boolean { // Проверяет, является ли строка палиндромом return this == this.reversed() } -
Inline Functions (Kotlin): Встраивают тело функции в место вызова, уменьшая накладные расходы на создание объекта функции, особенно полезно с лямбдами.
inline fun mesureExecutionTime(block: () -> Unit) { // Измеряет время выполнения блока кода val startTime = System.currentTimeMillis() block() val endTime = System.currentTimeMillis() println("Execution time: ${endTime - startTime} ms") } -
Data Classes (Kotlin): Автоматически генерируют
equals(),hashCode(),toString(),copy(), что удобно для хранения данных.data class User(val name: String, val age: Int) -
Sealed Classes (Kotlin): Представляют ограниченную иерархию классов, полезны для моделирования состояний или событий, особенно в комбинации с оператором
when. -
Generics: Позволяют создавать переиспользуемые компоненты, работающие с различными типами данных.
public class Box<T> { // Обобщенный класс для хранения любого типа данных private T data; public void setData(T data) { this.data = data; } public T getData() { return data; } } -
Операции с коллекциями (map, filter, reduce и др.): Функциональные методы для обработки коллекций данных.
val numbers = listOf(1, 2, 3, 4, 5) val squaredEvenNumbers = numbers .filter { it % 2 == 0 } // Фильтрация четных .map { it * it } // Возведение в квадрат -
Resource getters (Kotlin): Для получения строк, цветов, размеров и т.д. из ресурсов.
val appName = context.getString(R.string.app_name) val primaryColor = ContextCompat.getColor(context, R.color.colorPrimary) -
Nullable types and safe calls (Kotlin): Уменьшают количество
NullPointerException.val name: String? = null val length = name?.length ?: 0 // Безопасный вызов и оператор Элвиса