gpt4 book ai didi

scala - 覆盖 Scala 枚举中的 toString 方法

转载 作者:行者123 更新时间:2023-12-03 15:11:57 26 4
gpt4 key购买 nike

如何覆盖“toString”以使此 Scala 代码的行为类似于以下 Java 代码。

Scala 中的代码

object BIT extends Enumeration {
type BIT = Value
val ZERO, ONE, ANY = Value

override def toString() =
this match {
case ANY => "x "
case ZERO=> "0 "
case ONE => "1 "
}
}

val b = ONE
println(ONE) // returns ONE

想要的 toString 行为应该产生与以下 Java 代码相同的输出。
public enum BIT {
ZERO, ONE, ANY;

/** print BIT as 0,1, and X */
public String toString() {
switch (this) {
case ZERO:
return "0 ";
case ONE:
return "1 ";
default://ANY
return "X ";
}
}
}

BIT b = ONE;
System.out.println(b); // returns 1

我想我覆盖了错误的“toString”方法。

最佳答案

首先,是的,您覆盖了错误的 toString 方法。您正在覆盖 BIT 上的方法对象本身,这不是很有用。

其次,你只需简单地做这件事就容易多了

object BIT extends Enumeration {
type BIT = Value
val ZERO = Value("0")
val ONE = Value("1")
val ANY = Value("x")
}

然后你可以做
println(BIT.ONE) //prints "1"

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

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