Lazy extension property workaround
suggest changeAssume you want to create an extension property that is expensive to compute. Thus you would like to cache the computation, by using the lazy property delegate and refer to current instance (this), but you cannot do it, as explained in the Kotlin issues KT-9686 and KT-13053. However, there is an official workaround provided here.
In the example, the extension property is color. It uses an explicit colorCache which can be used with this as no lazy is necessary:
class KColor(val value: Int)
private val colorCache = mutableMapOf<KColor, Color>()
val KColor.color: Color
get() = colorCache.getOrPut(this) { Color(value, true) }
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents