在这个生成的属性委托用于账户输入前审查它。
修剪输入,同时让每个字段和 AccountForm 实例彼此独立;拒绝空白值,并且绝不记录 API 令牌。
kotlin
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
object TrimmedText : ReadWriteProperty<Any?, String> {
private var value = ""
override fun getValue(thisRef: Any?, property: KProperty<*>): String = value
override fun setValue(
thisRef: Any?,
property: KProperty<*>,
newValue: String,
) {
println("${property.name}: '$value' -> '${newValue.trim()}'")
value = newValue.trim()
}
}
class AccountForm {
var displayName: String by TrimmedText
var apiToken: String by TrimmedText
}
生成代码仅作示例,不代表任何特定模型