Kotlin val difference getter override vs assignment : <p>I started playing arround with Kotlin and read something about mutable val with custom getter. As refered in e.g <a href="http://blog.danlew.net/2017/05/30/mutable-vals-in-kotlin/" rel="noreferrer">here</a> or in the <a href="https://kotlinlang.org/docs/reference/coding-conventions.html#functions-vs-properties" rel="noreferrer">Kotlin Coding Convention</a> one should not override the getter if the result can change.</p>

<pre><code>class SampleArray(val size: Int) {
    val isEmpty get() = size == 0  // size is set at the beginning and does not change so this is ok
}

class SampleArray(var size: Int) {
    fun isEmpty() { return size == 0 }  // size is set at the beginning but can also change over time so function is prefered
}
</code></pre>

<p>But just from the perspective of usage as in the guidelines where is the difference between the following two</p>

<pre><code>class SampleArray(val size: Int) {
    val isEmpty get() = size == 0  // size can not change so this can be used instad of function
    val isEmpty = size == 0        // isEmpty is assigned at the beginning ad will keep this value also if size could change
}
</code></pre>

<p>From <a href="https://stackoverflow.com/a/36366900/3883569">this</a> answer I could see that for getter override the value is not stored. Is there something else where the getter override is different form the assignment? Maybe with delegates or latinit?</p>
