如何 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
答案 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