list - Scala模式匹配: How to match on an element inside a list?

标签 list scala pattern-matching

是否可以使用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/

相关文章:

python - 一种在 python 中制作函数列表的优雅方法

list - 深度复制 2D MutableList 的简洁方法是什么?

用于非泛型隐式参数的 Scala 糖

postgresql - spark 结构化流 PostgreSQL updatestatebykey

java - Assets 反向路由中的动态文件路径

c++ - 使用 patsubst 将一条路径转换为另一条路径

python - 根据字符串长度填充列表的空列表

python - 将列表转换为 NumPy 数组

java - 无效的正则表达式

java - url 路径的模式匹配