Kotlin中的模式匹配很好,它不会执行下一个模式匹配,在90%的使用情况下是很好的。
在Android中,当数据库更新时,我们使用Java的switch属性来继续下一个case,如果没有使用break语句,代码会像这样:
switch (oldVersion) {
case 1: upgradeFromV1();
case 2: upgradeFromV2();
case 3: upgradeFromV3();
}
所以,如果某人使用的应用程序版本为DB v1,并且错过了具有DB v2的应用程序版本,则他将执行所有所需的升级代码。
转换成Kotlin后,我们得到了一团糟:
when (oldVersion) {
1 -> {
upgradeFromV1()
upgradeFromV2()
upgradeFromV3()
}
2 -> {
upgradeFromV2()
upgradeFromV3()
}
3 -> {
upgradeFromV3()
}
}
我们现在只有3个版本,想象一下当数据库达到第19个版本会怎样。
无论如何都能让它们以相同的方式运作然后切换吗?我试过,但没有成功。
switch
语句几乎总是在每个case
后面都有一个break
,因此对于常见情况来说这是不方便的。 - Jayson Minard