Sobes.tech
Junior

Jakie funkcje pomocnicze znasz lub używałeś w swoim doświadczeniu?

sobes.tech AI

Odpowiedź od AI

  • Wyrażenia lambda: Skracają kod dla małych funkcji obsługi, np. kliknięć lub callbacków.

  • Funkcje rozszerzające (Kotlin): Dodają nowe funkcje do istniejących klas bez dziedziczenia, poprawiając czytelność i wygodę.

    fun String.isPalindrome(): Boolean {
        // Sprawdza, czy ciąg jest palindromem
        return this == this.reversed()
    }
    
  • Funkcje inline (Kotlin): Wstawiają ciało funkcji w miejsce wywołania, zmniejszając narzut związany z tworzeniem obiektu funkcji, szczególnie przy lambda.

    inline fun measureExecutionTime(block: () -> Unit) {
        // Mierzy czas wykonania bloku kodu
        val startTime = System.currentTimeMillis()
        block()
        val endTime = System.currentTimeMillis()
        println("Czas wykonania: ${endTime - startTime} ms")
    }
    
  • Klasy danych (Kotlin): Automatycznie generują equals(), hashCode(), toString(), copy(), co jest przydatne do przechowywania danych.

    data class User(val name: String, val age: Int)
    
  • Klasy sealed (Kotlin): Reprezentują ograniczoną hierarchię klas, przydatne do modelowania stanów lub zdarzeń, szczególnie w połączeniu z when.

  • Generics: Pozwalają tworzyć komponenty wielokrotnego użytku, działające z różnymi typami danych.

    public class Box<T> {
        // Ogólna klasa do przechowywania dowolnego typu danych
        private T data;
    
        public void setData(T data) {
            this.data = data;
        }
    
        public T getData() {
            return data;
        }
    }
    
  • Operacje na kolekcjach (map, filter, reduce itp.): Funkcyjne metody do przetwarzania kolekcji danych.

    val numbers = listOf(1, 2, 3, 4, 5)
    val squaredEvenNumbers = numbers
        .filter { it % 2 == 0 } // Filtruje parzyste
        .map { it * it }      // Podnosi do kwadratu
    
  • Gettery zasobów (Kotlin): Do pobierania stringów, kolorów, rozmiarów itp. z zasobów.

    val appName = context.getString(R.string.app_name)
    val primaryColor = ContextCompat.getColor(context, R.color.colorPrimary)
    
  • Typy nullable i bezpieczne wywołania (Kotlin): Zmniejszają liczbę NullPointerException.

    val name: String? = null
    val length = name?.length ?: 0 // Bezpieczne wywołanie i operator Elvis