"When" Anweisung vs Java "switch" Anweisung
Pattern matching in Kotlin ist schön und die Tatsache, die er nicht ausführen nächste pattern match ist gut, in 90% der Anwendungsfälle.
In Android, wenn die Datenbank aktualisiert wird, verwenden wir die Java-switch-Eigenschaft zu gehen, auf der nächsten Fall, wenn wir setzen Sie nicht ein break, um code, wie das suchen:
switch (oldVersion) {
case 1: upgradeFromV1();
case 2: upgradeFromV2();
case 3: upgradeFromV3();
}
Wenn also jemand eine app mit der version 1 des DB und verpasste die app-version mit DB-v2, bekommt er alle notwendigen upgrade-code ausgeführt.
Umgewandelt Kotlin, wir bekommen ein Durcheinander:
when (oldVersion) {
1 -> {
upgradeFromV1()
upgradeFromV2()
upgradeFromV3()
}
2 -> {
upgradeFromV2()
upgradeFromV3()
}
3 -> {
upgradeFromV3()
}
}
Wir haben hier nur 3-version vorstellen, bei der DB erreicht version 19 :/
Sowieso macht, wenn er in der gleichen Weise als Schalter? Ich habe versucht, weiterhin ohne Glück.
InformationsquelleAutor der Frage Geob-o-matic | 2015-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfache, aber wortreiche Lösung ist:
Einer anderen Lösung mit Funktion Referenzen:
InformationsquelleAutor der Antwort bashor
edit: Original-Antwort unten. Hier ist, was ich bin derzeit dabei:
Hier ist eine variation auf die Antwort @C. A. B. gab:
InformationsquelleAutor der Antwort Julian Delphiki
Wie wäre es damit:
InformationsquelleAutor der Antwort C.A.B.
Es ist absolut möglich
Zitat aus der offiziellen Referenz : Ablaufsteuerung: wenn, wenn, für, während
So, wenn gleiche Bedingung Liste kurz ist, dann kann man die Liste noch zu trennen von der Koma oder Bereiche benutzen, wie Bedingung in 1..10 wie bereits in anderen Antworten
InformationsquelleAutor der Antwort Yarh
Hier ist eine Mischung aus den beiden Antworten von bashor, mit ein wenig funktioneller Zucker:
InformationsquelleAutor der Antwort lukle
Andere Variante von OP ' s Antwort:
InformationsquelleAutor der Antwort arslancharyev31
Kotlin arbeitet mit einer anderen flow-control aufgerufen, wenn.
Ihrem code verwenden, wenn, kann auch sein.
Offensichtlich ist der code anders sein könnte, aber ich verstehe, dass deine Frage nur über die Verwendung von switch.
InformationsquelleAutor der Antwort Bharat Vasoya
InformationsquelleAutor der Antwort lukDeveloper