"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

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -