在Scala中的元素 - 值对列表中的值的惯用搜索

时间:2013-04-30 09:34:02

标签: scala

如何 idiomaticaly 在Scala中的value对列表中搜索(element, value)

是否有比以下解决方案更好(可能更简洁和/或更有效)的方法?

code.find(_._1 == 2).get._2

其中code属于List[(Int, String)]类型?

scala> val code: List[(Int, String)] = (0, "zero") :: (1, "one") :: (2, "two") :: Nil
code: List[(Int, String)] = List((0,zero), (1,one), (2,two))
scala> code.find(_._1 == 2).get._2
res0: String = two

2 个答案:

答案 0 :(得分:11)

模式匹配怎么样?

 code.collectFirst{ case(2, x) => x }

这会产生Some(two),您可以进一步map / fold

答案 1 :(得分:0)

这样做:

scala> code.toMap
res17: scala.collection.immutable.Map[Int,String] = Map(0 -> zero, 1 -> one, 2 -> two)

scala> res17(0)
res18: String = zero