【发布时间】:2015-06-14 17:09:54
【问题描述】:
Kotlin 中的模式匹配很好,而且它不会执行下一个模式匹配这一事实在 90% 的用例中都很好。
在 Android 中,当数据库更新时,如果我们不设置中断以使代码看起来像这样,我们会使用 Java 开关属性继续下一个案例:
switch (oldVersion) {
case 1: upgradeFromV1();
case 2: upgradeFromV2();
case 3: upgradeFromV3();
}
因此,如果某人有一个带有 DB 版本 1 的应用,但错过了带有 DB v2 的应用版本,他将执行所有需要的升级代码。
转换为 Kotlin,我们会遇到这样的混乱:
when (oldVersion) {
1 -> {
upgradeFromV1()
upgradeFromV2()
upgradeFromV3()
}
2 -> {
upgradeFromV2()
upgradeFromV3()
}
3 -> {
upgradeFromV3()
}
}
这里我们只有 3 个版本,想象一下当 DB 达到 19 版时。
无论如何,当以相同的方式操作时,然后切换?我试图继续没有运气。
【问题讨论】:
-
刚刚偶然发现youtrack.jetbrains.com/issue/KT-771 有什么解决方法吗?
-
我认为统计上(没有证据,但我确信 Kotlin 团队使用统计数据来决定)Java 中的
switch在每种情况下几乎总是有break,因此对于常见的情况。
标签: java switch-statement kotlin