假设我有以下类型为 Any 的列表:
val list = List("foo", 1, "bar", 2)
我现在想写一个函数,使用fold来仅计算列表中整数的数量。对于上面的列表,结果应该是“2”。
我知道使用fold计算所有元素的数量应该像这样:
def count(list: List[Any]): Int =
list.foldLeft(0)((sum,_) => sum + 1)
我该如何调整这个代码,只统计 Int 出现的次数?
另一版本:
list.count(_.isInstanceOf[Int])
如果你坚持使用foldLeft
版本,这里有一个:
def count(list: List[Any]): Int =
list.foldLeft(0)((sum, x) => x match {
case _: Int => sum + 1
case _ => sum
})
Int
进行过滤并获取 list
的大小,可以得到您想要的结果,这相当简单。scala> list.filter(_.isInstanceOf[Int]).size
res0: Int = 2