kingsley
10/27/2016, 5:40 AMclass 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()
}