是否可以使用Scala模式匹配来重写以下代码?
val ls: List[String] = ??? // some list of strings
val res = if (ls.contains("foo")) FOO
else if (ls.contains("bar")) BAR
else SOMETHING_ELSE
最佳答案
您可以使用类似的功能来实现
def onContains[T](xs: Seq[String], actionMappings: (String, T)*): Option[T] = {
actionMappings collectFirst {
case (str, v) if xs contains str => v
}
}
并像这样使用它:
val x = onContains(items,
"foo" -> FOO,
"bar" -> BAR
)
关于list - Scala模式匹配: How to match on an element inside a list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14643567/