Scala Map折叠而不是find

时间:2017-04-26 10:52:36

标签: scala functional-programming

尝试将find中的Map替换为fold但没有成功。 我做了一个简单的例子,不深入研究我的类型细节。 如何用fold替换它?

val s: Map[String, Int] = Map("1" -> 1, "2" -> 0, "3" -> 1)

s.find(_._2 == 0) match {
  case Some((_, 0)) => "F"
  case _ => "T"
}

1 个答案:

答案 0 :(得分:2)

虽然确实可能有更好的解决方案而不是问题的折叠,但这是您的问题的答案:

val s: Map[String, Int] = Map("1" -> 1, "2" -> 0, "3" -> 1)

s.foldLeft("T") {
  case (_, (_, 0)) => "F"
  case (res, _) => res
}

关键是你必须继续传递迄今为止在默认情况下收集的结果。