Назад к вопросам
Junior
73
questionbank

Какие вспомогательные функции вы знаете или использовали в своем опыте?

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 // Безопасный вызов и оператор Элвиса