angryziber / kotlin-puzzlers

A collection of Kotlin Puzzlers
419 stars 58 forks source link

Const val or val #76

Open EmmanuelVinas opened 3 years ago

EmmanuelVinas commented 3 years ago

What will this print in Kotlin 1.3.X and then in Kotlin 1.4.X ?

enum class EnumWithConst(val theValue: Int) {
        One(0),
        Two(EnumWithConst.constValue),
        Three(2 * EnumWithConst.constValue);

        companion object {
            const val constValue: Int = 100
        }
    }

    enum class EnumWithoutConst(val theValue: Int) {
        One(0),
        Two(EnumWithoutConst.simpleValue),
        Three(2 * EnumWithoutConst.simpleValue);

        companion object {
            val simpleValue: Int = 100
        }
    }

fun main() {
    println(EnumWithConst.values().joinToString { "$it => ${it.theValue}" })

    println("##############################")

    println(EnumWithoutConst.values().joinToString { "$it => ${it.theValue}" })
}

The related playground : https://pl.kotl.in/NjuR92qlu