Σε αυτό το άρθρο, θα μάθετε για το πότε θα κατασκευάσετε στο Kotlin με τη βοήθεια διαφόρων παραδειγμάτων.
Kotlin όταν κατασκευάζει
Η when
κατασκευή στο Kotlin μπορεί να θεωρηθεί ως αντικατάσταση του Java Switch Statement. Αξιολογεί μια ενότητα κώδικα μεταξύ πολλών εναλλακτικών λύσεων.
Παράδειγμα: Απλό όταν εκφράζεται
fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") val operator = readLine() val result = when (operator) ( "+" -> a + b "-" -> a - b "*" -> a * b "/" -> a / b else -> "$operator operator is invalid operator." ) println("result = $result") )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι όπως:
Εισαγάγετε τον τελεστή είτε +, -, * ή / * αποτέλεσμα = 60
Το παραπάνω πρόγραμμα λαμβάνει μια συμβολοσειρά εισόδου από τον χρήστη (Συνιστώμενη ανάγνωση: Λήψη εισόδου συμβολοσειράς από τον χρήστη στο Kotlin). Ας υποθέσουμε ότι ο χρήστης εισήγαγε *
. Σε αυτήν την περίπτωση, η έκφραση a * b
αξιολογείται και η τιμή αντιστοιχεί σε μεταβλητό αποτέλεσμα.
Αν καμία από τις προϋποθέσεις κλάδου είναι ικανοποιημένοι (χρήστης εγγράφεται τίποτα εκτός +
, -
, *, ή /
), else
υποκατάστημα αξιολογείται.
Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε when
ως έκφραση. Ωστόσο, δεν είναι υποχρεωτικό να χρησιμοποιείται when
ως έκφραση. Για παράδειγμα,
fun main(args: Array) ( val a = 12 val b = 5 println("Enter operator either +, -, * or /") val operator = readLine() when (operator) ( "+" -> println("$a + $b = $(a + b)") "-" -> println("$a - $b = $(a - b)") "*" -> println("$a * $b = $(a * b)") "/" -> println("$a / $b = $(a / b)") else -> println("$operator is invalid") ) )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι όπως:
Εισαγάγετε τον τελεστή είτε +, -, * ή / - 12 - 5 = 7
Εδώ, when
δεν είναι μια έκφραση (η τιμή επιστροφής από when
δεν εκχωρείται σε τίποτα). Σε αυτήν την περίπτωση, το else
υποκατάστημα δεν είναι υποχρεωτικό.
Λίγες δυνατότητες
Συνδυάστε δύο ή περισσότερες συνθήκες διακλάδωσης με κόμμα. Για παράδειγμα,
fun main(args: Array) ( val n = -1 when (n) ( 1, 2, 3 -> println("n is a positive integer less than 4.") 0 -> println("n is zero") -1, -2 -> println("n is a negative integer greater than 3.") ) )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
το n είναι αρνητικός ακέραιος μεγαλύτερος από 3.
Ελέγξτε την τιμή στο εύρος. Για παράδειγμα,
fun main(args: Array) ( val a = 100 when (a) ( in 1… 10 -> println("A positive number less than 11.") in 10… 100 -> println("A positive number between 10 and 100 (inclusive)") ) )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Ένας θετικός αριθμός μεταξύ 10 και 100 (συμπεριλαμβάνεται)
Ελέγξτε εάν μια τιμή είναι συγκεκριμένου τύπου.
Για να ελέγξουμε εάν μια τιμή είναι συγκεκριμένου τύπου στο χρόνο εκτέλεσης, μπορούμε να χρησιμοποιήσουμε είναι και είναι χειριστής. Για παράδειγμα,
όταν (x) (είναι Int -> print (x + 1) είναι String -> print (x.length + 1) είναι IntArray -> print (x.sum ()))
Χρησιμοποιήστε εκφράσεις ως κατάσταση κλάδου. Για παράδειγμα,
fun main(args: Array) ( val a = 11 val n = "11" when (n) ( "cat" -> println("Cat? Really?") 12.toString() -> println("Close but not close enough.") a.toString() -> println("Bingo! It's eleven.") ) )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Λοταρία! Είναι έντεκα.