"When" statement vs Java "switch" statement -
pattern matching in kotlin nice , fact not execute next pattern match in 90% of use cases.
in android, when database updated, use java switch property go on next case if not put break have code looking that:
switch (oldversion) { case 1: upgradefromv1(); case 2: upgradefromv2(); case 3: upgradefromv3(); }
so if has app version 1 of db , missed app version db v2, needed upgrade code executed.
converted kotlin, mess like:
when (oldversion) { 1 -> { upgradefromv1() upgradefromv2() upgradefromv3() } 2 -> { upgradefromv2() upgradefromv3() } 3 -> { upgradefromv3() } }
here have 3 version, imagine when db reaches version 19 :/
anyway makes when acting in same way switch? tried continue without luck.
simple wordy solution is:
if (oldversion <= 1) upgradefromv1() if (oldversion <= 2) upgradefromv2() if (oldversion <= 3) upgradefromv3()
another possible solution function references:
fun upgradefromv0() {} fun upgradefromv1() {} fun upgradefromv2() {} fun upgradefromv3() {} val upgrades = arrayof(::upgradefromv0, ::upgradefromv1, ::upgradefromv2, ::upgradefromv3) fun upgradefrom(oldversion: int) { (i in oldversion..upgrades.lastindex) { upgrades[i]() } }
Comments
Post a Comment