gpt4 book ai didi

scala - 使用scala构造函数设置trait中定义的变量

转载 作者:行者123 更新时间:2023-12-03 06:39:15 24 4
gpt4 key购买 nike

如果我理解正确的话,traits 是最接近 Java 接口(interface)的东西,类构造函数会自动设置变量。

但是,如果我有一个扩展特征的类,并且有一个从特征设置变量的构造函数,比如:

trait Foo {
var foo: String
}

class Bar (foo: String) extends Foo { /* ... */ }

当我创建 Bar 对象时,我希望在其中设置特征的 foo 字符串。

编译器似乎给了我关于此的错误。实现这一目标的正确方法是什么?

最佳答案

trait Foo { var foo: String = _ }
class Bar(foo0: String) extends Foo { foo = foo0 }

该特征声明了一个未初始化的变量;然后该类将其设置为等于输入参数。

或者,

trait Foo {
def foo: String
def foo_=(s: String): Unit
}
class Bar(var foo: String) extends Foo {}

声明与 foo 相对应的 getter/setter 对,由类设置。

关于scala - 使用scala构造函数设置trait中定义的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8178602/

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