Kotlin 'when' statement vs Java 'switch'

前端 未结 10 1113
感情败类
感情败类 2020-12-03 06:41

Pattern matching in Kotlin is nice and the fact it does not execute the next pattern match is good in 90% of use cases.

In Android, when database is updated, we use J

10条回答
  •  忘掉有多难
    2020-12-03 07:12

    Simple but wordy solution is:

    if (oldVersion <= 1) upgradeFromV1()
    if (oldVersion <= 2) upgradeFromV2()
    if (oldVersion <= 3) upgradeFromV3()
    

    Another possible solution with function references:

    fun upgradeFromV0() {}
    fun upgradeFromV1() {}
    fun upgradeFromV2() {}
    fun upgradeFromV3() {}
    
    val upgrades = arrayOf(::upgradeFromV0, ::upgradeFromV1, ::upgradeFromV2, ::upgradeFromV3)
    
    fun upgradeFrom(oldVersion: Int) {
        for (i in oldVersion..upgrades.lastIndex) {
            upgrades[i]()
        }
    }
    

提交回复
热议问题