import kotlin.reflect.KProperty
// Custom delegate that logs every read + write
class LoggingProperty<T>(private var value: T) {
operator fun getValue(thisRef: Any?, property: KProperty<*>): T {
println("[GET ${property.name}] → $value")
return value
}
operator fun setValue(thisRef: Any?, property: KProperty<*>, new: T) {
println("[SET ${property.name}] $value → $new")
value = new
}
}
class User {
var name: String by LoggingProperty("anonymous")
var age: Int by LoggingProperty(0)
}
fun main() {
val u = User()
u.name = "Alice" // [SET name] anonymous → Alice
println(u.age) // [GET age] → 0
}
Create a free account and build your private vault. Share publicly whenever you want.