Sobes.tech
Junior

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

sobes.tech AI

Отговор от AI

  • Ламбда изрази: Скъсяват кода за малки функции за обработка, като кликвания или обратни повиквания.

  • Функции за разширение (Kotlin): Добавят нови функции към съществуващи класове без наследяване, подобрявайки четимостта и удобството.

    fun String.isPalindrome(): Boolean {
        // Проверява дали низът е палиндром
        return this == this.reversed()
    }
    
  • Inline функции (Kotlin): Вмъкват тялото на функцията на мястото на извикването, намалявайки разходите за създаване на обект на функция, особено с ламбда изрази.

    inline fun measureExecutionTime(block: () -> Unit) {
        // Измерва времето за изпълнение на блока код
        val startTime = System.currentTimeMillis()
        block()
        val endTime = System.currentTimeMillis()
        println("Време за изпълнение: ${endTime - startTime} ms")
    }
    
  • Данни класове (Kotlin): Автоматично генерират equals(), hashCode(), toString(), copy(), полезни за съхранение на данни.

    data class User(val name: String, val age: Int)
    
  • Затворени класове (Kotlin): Представляват ограничена йерархия на класове, полезни за моделиране на състояния или събития, особено в комбинация с when.

  • Генерични типове: Позволяват създаването на компоненти за многократна употреба, работещи с различни типове данни.

    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 }      // Вдига на квадрат
    
  • Получаване на ресурси (Kotlin): За получаване на низове, цветове, размери и др. от ресурси.

    val appName = context.getString(R.string.app_name)
    val primaryColor = ContextCompat.getColor(context, R.color.colorPrimary)
    
  • Nullable типове и безопасни извиквания (Kotlin): Намаляват броя на NullPointerException.

    val name: String? = null
    val length = name?.length ?: 0 // Безопасно извикване и оператор Елвис