我有以下代码:
object Order extends Enumeration("asc", "desc") {
type OrderType = Value
val asc, desc = Value
}
Run Code Online (Sandbox Code Playgroud)
我用它:
val someStr:String = "someStr"
val order = Order.withName(someStr)
Run Code Online (Sandbox Code Playgroud)
这给了我输入字符串的枚举,但如果我发送字符串"asc1"我得到异常:
NoSuchElementException: None.get (ProductRequest.scala
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 我可以迭代值并检查字符串是否存在?这样我可以抛出更好的详细异常..
我在想我可以迭代Order.values - >但找不到有用的东西
谢谢
Lau*_*uri 23
您可以将枚举定义为:
object Order extends Enumeration {
type OrderType = Value
val asc = Value("asc")
val desc = Value("desc")
def isOrderType(s: String) = values.exists(_.toString == s)
}
Run Code Online (Sandbox Code Playgroud)
并使用它:
Order.isOrderType("asc") //> res0: Boolean = true
Order.isOrderType("foo") //> res1: Boolean = false
Run Code Online (Sandbox Code Playgroud)
这似乎可以解决问题:
object EnumerationTypes extends App {
object Order extends Enumeration {
type OrderType = Value
val asc = Value("asc")
val desc = Value("desc")
def valueOf(name: String) = this.values.find(_.toString == name)
}
println(Order.valueOf("asc")) // Some(asc)
println(Order.valueOf("ascending")) // None
}
Run Code Online (Sandbox Code Playgroud)
当字符串无效而不是抛出异常时,它返回 None 。
归档时间: |
|
查看次数: |
4331 次 |
最近记录: |