Scala 检查我的枚举值中是否存在某些字符串,而不存在NoTouchElement异常
我有以下代码:Scala 检查我的枚举值中是否存在某些字符串,而不存在NoTouchElement异常,scala,enums,Scala,Enums,我有以下代码: object Order extends Enumeration("asc", "desc") { type OrderType = Value val asc, desc = Value } 我用它: val someStr:String = "someStr" val order = Order.withName(someStr) 这将为我提供输入字符串的枚举,但如果我发送字符串“asc1”,则会出现异常: NoSuchElementException
object Order extends Enumeration("asc", "desc") {
type OrderType = Value
val asc, desc = Value
}
我用它:
val someStr:String = "someStr"
val order = Order.withName(someStr)
这将为我提供输入字符串的枚举,但如果我发送字符串“asc1”,则会出现异常:
NoSuchElementException: None.get (ProductRequest.scala
我的问题是-我可以迭代这些值并检查字符串是否存在吗?这样我可以抛出更详细的异常
我想我可以迭代Order.values->,但找不到有用的东西
谢谢您可以将枚举定义为:
object Order extends Enumeration {
type OrderType = Value
val asc = Value("asc")
val desc = Value("desc")
def isOrderType(s: String) = values.exists(_.toString == s)
}
并使用它:
Order.isOrderType("asc") //> res0: Boolean = true
Order.isOrderType("foo") //> res1: Boolean = false
这似乎起到了作用:
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
}
当字符串无效时,它将返回None,而不是引发异常。自2.10以来,构造枚举的方法已被弃用。是的,您看到了它并根据答案更新了代码。。去掉了eclipse中显示的警告插件。。tnxThanks,valueOf很有用,因为它返回选项!我还不太喜欢Scala,但正在学习喜欢它:-)如果值不是字符串,我该怎么办?例:val缺失_部分:值=值(4)