gpt4 book ai didi

Scala 3 枚举方法覆盖

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

有没有办法像在 Java 中一样覆盖 Scala 3 枚举中的方法?

public enum Test {

ONE {
@Override
public int calc() {
return 1;
}
},
TWO {
@Override
public int calc() {
return 2;
}
};

public abstract int calc();
}
我试过这样的事情,但没有结果。在文档中也没有找到关于枚举方法覆盖的任何内容。
enum Test {
def calc(): Int ={
0
}
case One
override def calc(): Int ={
1
}
case Two
override def calc(): Int ={
2
}
}
也许有另一种方法可以实现类似的功能?

最佳答案

enum是密封的,所以事后不能扩展,所以没有理由override任何事物。只需在一个地方收集所有案例,而不是多个 override -methods,编写一个涵盖所有情况的方法:

enum A:
case X(x: Int)
case Y(y: String)
def foo: String = this match {
case X(x) => s"X = ${x}"
case Y(y) => y
}

val x = new A.X(42)
val y = new A.Y("y")
println(x.foo) // X = 42
println(y.foo) // y

关于Scala 3 枚举方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67246842/

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