Совпадение шаблонов в Kotlin приятно, и тот факт, что он не выполняет следующее совпадение шаблонов, хорош в 90% случаев использования.
В Android, когда база данных обновляется, мы используем свойство Java switch, чтобы перейти к следующему случаю, если мы не помещаем перерыв, чтобы иметь такой код:
switch (oldVersion) {
case 1: upgradeFromV1();
case 2: upgradeFromV2();
case 3: upgradeFromV3();
}
Итак, если у кого-то есть приложение с 1-й версией БД и пропустили версию приложения с DB v2, он получит весь необходимый код обновления.
Преобразованный в Котлин, мы получаем беспорядок вроде:
when (oldVersion) {
1 -> {
upgradeFromV1()
upgradeFromV2()
upgradeFromV3()
}
2 -> {
upgradeFromV2()
upgradeFromV3()
}
3 -> {
upgradeFromV3()
}
}
Здесь у нас есть только 3 версии, представьте, когда DB достигает версии 19:/
В любом случае, когда вы действуете так же, как переключатель? Я пробовал продолжать без везения.