Kotlin中的模式匹配很好,而且它不執行下一次模式匹配的事實在90%的用例中很好。「When」聲明與Java「switch」聲明
在Android中,當數據庫被更新時,我們使用Java切換屬性去下一個情況下,如果我們不把休息有代碼看這樣的:
switch (oldVersion) {
case 1: upgradeFromV1();
case 2: upgradeFromV2();
case 3: upgradeFromV3();
}
因此,如果有人有一個應用程序版本1的數據庫並且錯過了使用數據庫v2的應用程序版本,他將獲得所有必需的升級代碼。
轉換爲科特林,我們得到了一個爛攤子,如:
when (oldVersion) {
1 -> {
upgradeFromV1()
upgradeFromV2()
upgradeFromV3()
}
2 -> {
upgradeFromV2()
upgradeFromV3()
}
3 -> {
upgradeFromV3()
}
}
這裏,我們只有3版本,想象一下當DB達到19版:以同樣的方式不是演戲的時候/
反正品牌開關?我嘗試繼續沒有運氣。
只是偶然在https://youtrack.jetbrains.com/issue/KT-771那麼什麼解決辦法? –
我認爲在統計學上(沒有證據,但我確定Kotlin團隊使用統計數據來判斷)Java中的「switch」幾乎總是有一個「break」,因此這對常見情況來說很不方便。 –