Scala模式匹配:如何在列表中的元素上进行匹配? [英] Scala pattern matching: How to match on an element inside a list?

查看:44
本文介绍了Scala模式匹配:如何在列表中的元素上进行匹配?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以使用Scala模式匹配来重写以下代码?

Is it possible to rewrite the following code using Scala pattern matching?

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
)

这篇关于Scala模式匹配:如何在列表中的元素上进行匹配?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆