Sobes.tech
Junior

Εξηγήστε τη φιλοσοφία της έκφρασης 'when' στη γλώσσα προγραμματισμού Kotlin.

sobes.tech AI

Απάντηση από AI

Το when στην Kotlin είναι ένας καθολικός δομικός τελεστής που αντικαθιστά το κλασικό switch σε άλλες γλώσσες. Μπορεί να χρησιμοποιηθεί ως έκφραση (επιστρέφοντας μια τιμή) ή ως τελεστής.

Βασικές δυνατότητες:

  • Σύγκριση τιμών: Ταίριασμα με συγκεκριμένες τιμές.

    fun describe(obj: Any): String =
        when (obj) {
            1           -> "Ένα"
            "Hello"     -> "Χαιρετισμός"
            is Long     -> "Μακρύ"
            !is String  -> "Δεν είναι συμβολοσειρά"
            else        -> "Άγνωστο"
        }
    
  • Έλεγχος τύπου (is/!is): Ταίριασμα με τύπους δεδομένων.

  • Έλεγχος συμμετοχής (in/!in): Έλεγχος αν ανήκει σε εύρος ή συλλογή.

    fun checkRange(x: Int): String =
        when (x) {
            in 1..10   -> "Θετικός αριθμός εντός εύρους"
            !in 10..20 -> "Δεν εντός του δεύτερου εύρους"
            else       -> "Καμία από τις παραπάνω"
        }
    
  • Χωρίς επιχειρήματα: Χρησιμοποιείται ως πιο ευέλικτη αντικατάσταση αλυσίδων if-else if-else. Οι συνθήκες αξιολογούνται διαδοχικά.

    fun checkBoolean(x: Boolean, y: Boolean): String =
        when {
            x && y -> "Και οι δύο αληθινοί"
            !x && !y -> "Και οι δύο ψευδείς"
            else -> "Μεικτό"
        }
    
  • Επιστροφή τιμής: Αν το when χρησιμοποιείται ως έκφραση, πρέπει να είναι εξαντλητικό (να καλύπτει όλες τις πιθανές περιπτώσεις ή να έχει κλάδο else).

Το when βελτιώνει την αναγνωσιμότητα και την ασφάλεια του κώδικα σε σύγκριση με το παραδοσιακό switch.