我读了this https://stackoverflow.com/questions/1321745/scala-doesnt-have-enums-what-to-use-instead-of-an-enum and this https://stackoverflow.com/questions/1898932/case-classes-vs-enumerations-in-scala,但我仍然不明白在 Scala 中执行此操作的(惯用)等效方法
enum Status {
OK(1, "Ok", "Okay"),
NOT_OK(5, "Not Ok", "Not Okay")
BAD(10, "Bad", "Run for your life")
int code;
String name;
String description; // custom fields
Status(int code, String name, String description) {
this.code = code;
this.name = name;
this.description = description;
}
}
class Main {
public static void main(String[] args) {
for(Status status : Status.values) { // iterate through them
doStuff(status);
}
}
private doStuff(Status status) {
System.out.println(status.description);
// and more
}
}
在 Scala 中,您可以创建一个类似于 Java 中的“enum”的枚举结构。基本上,您需要做的只是扩展scala.枚举类 http://www.scala-lang.org/api/current/index.html#scala.Enumeration如果您需要一个更复杂的类作为枚举,则可以扩展 Val 类。否则,您可以使用默认的 Val 类,它接受 Int 或 String 或两者。下面是 Java 代码的 Scala 版本。
object Status extends Enumeration {
case class StatusVal(code: Int, name: String, description: String) extends Val
val OK = StatusVal(1, "Ok", "Okay")
val NOT_OK = StatusVal(1, "Not Ok", "Not Okay")
val BAD = StatusVal(1, "Bad", "Run for your life")
}
object Application extends App {
Status.values foreach (s => println(s.asInstanceOf[StatusVal].description))
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)