【发布时间】:2016-10-01 04:02:42
【问题描述】:
我有以下递归函数从列表中删除项目 (zooResidents: List[(String, Int)]) 包含在另一个列表 (pets: List[String] )。它可以工作,但速度很慢。 Scala 的实现方式是什么?
val pets = List("cat", "dog")
val zooResidents = List(("cat", 4), ("lion", 2), ("tiger", 3), ("dog", 2)
def removePets(zooResidents: List[(String, Int)], pets: List[String]): List[(String, Int)] = {
if (pets.isEmpty) zooResidents
else removePets(zooResidents.filterNot(_._1.contains(pets.head)), pets.tail)
}
removePets(zooResidents, pets) //> res2: List[(String, Int)] = List((lion,2), (tiger,3))
【问题讨论】:
标签: scala recursion functional-programming scala-collections tail-recursion