gpt4 book ai didi

scala - 类构造函数/二传手

转载 作者:行者123 更新时间:2023-12-01 09:04:09 24 4
gpt4 key购买 nike

我是 Scala 的新手,具有基本的 Java 背景。我研究了如何实现类构造函数以及如何在 setter 中为该类的字段提供一些逻辑。

class SetterTest(private var _x: Int) { 
def x: Int = _x
def x_=(x: Int) {
if (x < 0) this._x = x * (-1)
}
}

构造函数参数分配给字段 _x ,因此不使用 setter。如果我想使用setter的逻辑怎么办?

object Test {
def main(args: Array[String]) {
val b = new SetterTest(-10)
println(b.x) // -10
b.x = -10
println(b.x) // 10
}
}

在 Java 中,我可以在构造函数中使用 setter 来强制使用这个示例逻辑。

我如何在 Scala 中实现这一点?

最佳答案

在 Scala 中,整个类主体构成了主构造函数。所以你可以简单地这样做:

class SetterTest(private var _x: Int) {
x = _x // this will invoke your custom assignment operator during construction

def x: Int = _x
def x_=(x: Int) {
if (x < 0) this._x = x * (-1)
}
}

现在试试看:

scala> new SetterTest(-9).x
res14: Int = 9

关于scala - 类构造函数/二传手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3994703/

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