I have recently read about the const
keyword, and I'm so confused! I can't find any difference between const
and the val
keyword, I mean we can use both of them to make an immutable variable, is there anything else that I'm missing?
const
s are compile time constants. Meaning that their value has to be assigned during compile time, unlike val
s, where it can be done at runtime.
This means, that const
s can never be assigned to a function or any class constructor, but only to a String
or primitive.
For example:
const val foo = complexFunctionCall() //Not okay
val fooVal = complexFunctionCall() //Okay
const val bar = "Hello world" //Also okay