package net.shadowfacts.cacao.util import kotlin.reflect.KProperty /** * @author shadowfacts */ class ObservableLateInitProperty(val observer: (T) -> Unit) { lateinit var storage: T operator fun getValue(thisRef: Any, property: KProperty<*>): T { return storage } operator fun setValue(thisRef: Any, property: KProperty<*>, value: T) { storage = value observer(value) } }