"Wenn" - 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.

Bin einfach auf youtrack.jetbrains.com/issue/KT-771 Abhilfe dann?
Ich denke, statistisch (keine Beweise, aber ich bin mir sicher, dass Kotlin-team verwendet Statistiken, um zu entscheiden), dass ein switch in Java hat fast immer eine break in jedem Fall, daher ist es ungeeignet für den Allgemeinen Fall.

InformationsquelleAutor Geob-o-matic | 2015-06-14

Schreibe einen Kommentar