Pau*_*per 4 java enums scala idiomatic
我已经读过这个和这个,但我仍然不理解在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
}
}
Run Code Online (Sandbox Code Playgroud)
cyr*_*llk 10
在Scala中,您可以创建一个与Java"enum"接近的Enumeration结构.基本上,您需要做的只是扩展一个scala.Enumeration类,并在需要更复杂的类作为枚举时扩展Val类.否则,您可以使用默认的Val类,它接受Int或String或Both.下面是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))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |