Quali funzioni ausiliarie conosci o hai utilizzato nella tua esperienza?
sobes.tech AI
Risposta dell'AI
-
Lambda espressioni: Accorciano il codice per funzioni di gestione di piccole dimensioni, come clic o callback.
-
Funzioni di estensione (Kotlin): Aggiungono nuove funzioni alle classi esistenti senza ereditarietà, migliorando leggibilità e praticità.
fun String.isPalindrome(): Boolean { // Controlla se la stringa è un palindromo return this == this.reversed() } -
Funzioni inline (Kotlin): Inseriscono il corpo della funzione nel punto della chiamata, riducendo i costi di overhead per la creazione di oggetti funzione, utile con lambda.
inline fun measureExecutionTime(block: () -> Unit) { // Misura il tempo di esecuzione del blocco di codice val startTime = System.currentTimeMillis() block() val endTime = System.currentTimeMillis() println("Tempo di esecuzione: ${endTime - startTime} ms") } -
Classi dati (Kotlin): Generano automaticamente
equals(),hashCode(),toString(),copy(), utile per memorizzare dati.data class User(val name: String, val age: Int) -
Classi sigillate (Kotlin): Rappresentano una gerarchia limitata di classi, utili per modellare stati o eventi, specialmente in combinazione con
when. -
Generics: Permettono di creare componenti riutilizzabili che lavorano con diversi tipi di dati.
public class Box<T> { // Classe generica per memorizzare qualsiasi tipo di dato private T data; public void setData(T data) { this.data = data; } public T getData() { return data; } } -
Operazioni con collezioni (map, filter, reduce, ecc.): Metodi funzionali per elaborare collezioni di dati.
val numbers = listOf(1, 2, 3, 4, 5) val squaredEvenNumbers = numbers .filter { it % 2 == 0 } // Filtra i pari .map { it * it } // Eleva al quadrato -
Getters di risorse (Kotlin): Per ottenere stringhe, colori, dimensioni, ecc., dalle risorse.
val appName = context.getString(R.string.app_name) val primaryColor = ContextCompat.getColor(context, R.color.colorPrimary) -
Tipi nullable e chiamate sicure (Kotlin): Riducano il numero di
NullPointerException.val name: String? = null val length = name?.length ?: 0 // Chiamata sicura e operatore Elvis