我在 Kotlin 中有一個資料類,其中的值相互依賴,
例如
data class test(
var a: Int = 0,
var b: Int = 10 a,
)
如果a更新了 for 的值,我希望 for 的值b自動更改。
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
您可以創建一個由另一個屬性支持的屬性,如下所示:
data class test(
var a: Int = 0,
) {
var b: Int
get() = a 10
set(value) {
a = value - 10
}
}
或者甚至使它成為test類的擴展。
請注意b不能用建構式設定。它不會自動包含在equals(),hashCode()和其他方法中。它實際上是有道理的,因為它實際上只是a.
uj5u.com熱心網友回復:
您需要一個自定義的 setter/delegate for a,但不能為主要建構式屬性添加它,因此您不能data class在這里使用,只有一個簡單的:
class Test(a: Int = 0, var b: Int = 10 a) {
var a by Delegates.observable(a) { _, _, newValue -> this.b = 10 newValue }
}
此外,如果您想在a和之間強制執行這種關系,則b需要禁用直接更改b值(包括在建構式中的設定):
class Test(a: Int = 0) {
var a by Delegates.observable(a) { _, _, newValue -> this.b = 10 newValue }
var b = 10 a
private set
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/312841.html
上一篇:具有多個上限的通用中綴函式
