gpt4 book ai didi

scala - 如何编写一个可以通过两个特征扩展两个字段的类?

转载 作者:行者123 更新时间:2023-12-02 06:20:30 25 4
gpt4 key购买 nike

我想要一个 B 类,它可以通过两个特征 A_1 和 A_2 扩展为两个字段。重要的是,B 类本身没有这两个字段,因为 B 类也应该可以在没有这些字段的情况下使用。

我的第一个想法:

trait A_1 { val x: Int }
trait A_2 { val y: Int }
class B

但是 new B with A_1 with A_2 不起作用,因为 xy 是抽象成员,需要在类 B 中定义.

我的第二个想法:

trait A_1 { var x: Int = _}
trait A_2 { var y: Int = _}
class B

然后可以在创建 B 的对象后设置字段:

val b = new B with A_1 with A_2
b.x = 1
b.y = 2

这可行,但有点难看,因为必须在之后设置值。这种构造也使类可变。

我的第三个想法:

class A_1 (val x: Int)
class A_2 (val y: Int)

但是B类不允许扩展多个类,所以这个想法行不通。

还有哪些可能性可以实现这种情况?有没有比思路 2 更好的方法?

最佳答案

你是如此亲密:

scala> trait A1 {val x: Int}
defined trait A1

scala> trait A2 {val y: Int}
defined trait A2

scala> class B
defined class B

scala> new B with A1 with A2 {val x = 4; val y = 2}
res0: B with A1 with A2 = $anon$1@2bc20611

关于scala - 如何编写一个可以通过两个特征扩展两个字段的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11082631/

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