gpt4 book ai didi

scala - 为什么我能够使用传递给类定义的参数?

转载 作者:行者123 更新时间:2023-12-03 03:28:59 25 4
gpt4 key购买 nike

我刚刚学习类、对象和 Scala,昨天我看到了这样的东西:

class Foo(bar: Int) {
def increaseByOne = bar + 1
}

为什么我可以在 increaseByOne 方法中使用 bar?我希望方法定义会提示不知道 bar

我认为定义这样一个类的正确方法是

class Foo(x: Int) {
val bar = x

def increaseByOne = bar + 1
}

最佳答案

这是 Scala 的奇妙功能之一:如果您从任何非构造函数的方法引用构造函数参数,Scala 会自动将该构造函数变量分配给字段。因此,Scala 可以有效地将您的第一个代码片段转换为第二个代码片段(使用 private[this] 修饰符)。

此外,前面带有 val/var 的构造函数参数也会创建 getters/setters:

class Foo(val bar: Int)
val foo = new Foo(42);
println(foo.bar)

关于scala - 为什么我能够使用传递给类定义的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12814138/

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