我有一个枚举,我想在一个actor的模式匹配中使用.我没有得到我期望的东西,现在,我怀疑我错过了一些简单的东西.
我的枚举,
object Ops extends Enumeration {
val Create = Value("create")
val Delete = Value("delete")
}
Run Code Online (Sandbox Code Playgroud)
然后,我从String创建一个Ops:
val op = Ops.valueOf("create")
Run Code Online (Sandbox Code Playgroud)
在我的比赛中,我有:
case (Ops.Create, ...)
Run Code Online (Sandbox Code Playgroud)
但是Ops.Create似乎不等于ops.valueOf("create")
前者只是一个原子'创造'而后者是一些(创造)
希望这是足够的信息让别人告诉我我错过了什么...
谢谢
如果您只是想获取副本Create,那么您应该直接在代码中引用它:
val op = Ops.Create
Run Code Online (Sandbox Code Playgroud)
但是如果你从字符串中解析它,字符串可能包含垃圾,所以valueOf返回一个Option:
val op1 = Ops.valueOf("create") // Some(Ops.Create)
val op2 = Ops.valueOf("delete") // Some(Ops.Delete)
val op3 = Ops.valueOf("aljeaw") // None
Run Code Online (Sandbox Code Playgroud)
现在,在你的比赛中你可以随身携带Option[Ops.Value]并寻找:
case(Some(Ops.Create),...)
Run Code Online (Sandbox Code Playgroud)
并且你有垃圾的内置鲁棒性作为输入.