This works: ``` class RequiredVar<T> : ReadW...
# announcements
k
This works:
Copy code
class RequiredVar<T> : ReadWriteProperty<Any?, T?> {
    private var value: T? = null
    private var initialized = false

    override fun getValue(thisRef: Any?, property: KProperty<*>): T? {
        require(initialized)
        return value
    }

    override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) {
        this.value = value
        initialized = true
    }
}

fun <T> required() = RequiredVar<T>()


class Sample<T> {
    var someValue: T? by required()
}
👍 1