Big Chungus
10/26/2020, 5:07 PMephemient
10/26/2020, 5:08 PMinterface ReadWriteProperty<in T, V> : ReadOnlyProperty<T, V>
Big Chungus
10/26/2020, 5:09 PMBig Chungus
10/26/2020, 5:12 PMBig Chungus
10/26/2020, 5:14 PMephemient
10/26/2020, 5:18 PMBig Chungus
10/26/2020, 5:18 PMVampire
10/26/2020, 5:22 PMBig Chungus
10/26/2020, 5:22 PMVampire
10/26/2020, 5:23 PMVampire
10/26/2020, 5:23 PMVampire
10/26/2020, 5:23 PMBig Chungus
10/26/2020, 5:23 PMVampire
10/26/2020, 5:24 PMephemient
10/26/2020, 5:24 PMVampire
10/26/2020, 5:25 PMBig Chungus
10/26/2020, 5:25 PMBig Chungus
10/26/2020, 5:26 PMinternal class ChainedProperty<R, V>(
private var main: ReadWriteProperty<R, V?>,
private val fallback: ReadWriteProperty<R, V>
) : ReadWriteProperty<R, V> {
override fun getValue(thisRef: R, property: KProperty<*>): V {
return main.getValue(thisRef, property) ?: fallback.getValue(thisRef, property)
}
override fun setValue(thisRef: R, property: KProperty<*>, value: V) {
main.setValue(thisRef, property, value)
}
}
internal infix fun <R, V> ReadWriteProperty<R, V?>.or(fallback: ReadWriteProperty<R, V>) = ChainedProperty(this, fallback)
Big Chungus
10/26/2020, 5:27 PMBig Chungus
10/26/2020, 5:28 PMVampire
10/26/2020, 5:28 PMVampire
10/26/2020, 5:28 PMBig Chungus
10/26/2020, 5:29 PMtype MyProp = ReadWriteProperty<R, V?> | ReadOnlyProperty<R, V?>
ephemient
10/26/2020, 5:36 PM