如何使变量依赖于其他变量?

时间:2018-12-22 14:49:17

标签: android android-studio kotlin

为了理解目的,我正在尝试在kotlin中关联两个变量。

这就是我想要做的。

我希望var impact依赖于var lives。因为每次var lives都应包含70个var impact单位。

请指导我如何做。

2 个答案:

答案 0 :(得分:5)

您可以使用属性委托,它会在每次属性值更改时触发。使用委托,您可以根据lives的新值来更改impact属性:

var lives: Int = 0
var impact: Int by Delegates.observable(0) { property, oldValue, newValue ->
    // add your logic here to react on changes of `impact` variable
    lives = 70 * newValue
}

Delegates.observable()是Kotlin标准库的内置委托。

答案 1 :(得分:0)

另一种方法是使用没有背景字段的属性来产生影响:

var lives = 0
val impact get(): Int {
    // do something
    return lives * 5 // impact depends on lives
}

通过这种方式,您不会像Sergey的回答那样被动地更改impact,但是如果您访问lives,则会得到依赖于impact的值。