gpt4 book ai didi

kotlin - 如何在 Kotlin 类构造函数主体中使用自定义 setter

转载 作者:IT老高 更新时间:2023-10-28 13:45:06 25 4
gpt4 key购买 nike

我找不到更好的标题来描述如何在这个 Kotlin 类中避免代码重复(需要表达式):

class Person(email: String) {
var email: String = email
set(value) {
require(value.trim().isNotEmpty(), { "The email cannot be blank" })
field = value
}

init {
require(email.trim().isNotEmpty(), { "The email cannot be blank" })
}
}

在 java 中,我会有一个带有名称验证的 setter,然后我会从构造函数中调用它。

在 Kotlin 中这样做的惯用方式是什么?

最佳答案

使用委托(delegate)。 observable() 委托(delegate)已经存在。

class Person(initialEmail: String) { // No "var" any more.
var email: String by Delegates.observable("") {
_, _, newValue ->
// This code is called every time the property is set.
require(newValue.trim().isNotEmpty(), { "The email cannot be blank" })
}

init {
// Set the property at construct time, to invoke the delegate.
email = initialEmail
}
}

关于kotlin - 如何在 Kotlin 类构造函数主体中使用自定义 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47383344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com