gpt4 book ai didi

class - Scala 自动 getter 和 setter 覆盖自定义 _=

转载 作者:行者123 更新时间:2023-12-04 17:35:04 25 4
gpt4 key购买 nike

在 scala 中,类的用户在调用方法或直接使用 val x = myclass.myproperty 访问某些字段/成员之间没有区别。能够控制例如设置或获取字段,scala 让我们覆盖 _= 方法。但是 = 真的是一种方法吗?我很迷惑。

让我们看下面的代码:

class Car(var miles: Int)

var myCar = new Car(10)
println(myCar.miles) //prints 10
myCar.miles = 50
println(myCar.miles) //prints 50

这段代码也是如此(注意 myCar.miles = 50 中的双空格):
class Car(var miles: Int)

var myCar = new Car(10)
println(myCar.miles) //prints 10
myCar.miles = 50
println(myCar.miles) //still prints 50

现在我想改变方式 miles可以设置或读取,例如总是在屏幕上打印一些东西。我该怎么做才能使我的类(class)的用户不受影响,并且如果在 = 符号之前使用空格也不会产生任何影响?

最佳答案

尝试这个:

class Car(private var _miles: Int) {
def miles = _miles
def miles_=(m: Int): Unit = {
println("boo")
_miles = m
}
}

空格不重要。编译器看到您正在分配 miles并将插入对 miles_= 的调用无论您插入多少个空格。

关于class - Scala 自动 getter 和 setter 覆盖自定义 _=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22935138/

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