使用折叠计算 Scala 列表中的 Int 数
Count number of Ints in Scala list using a fold
假设我有以下任意类型的列表:
val list = List("foo", 1, "bar", 2)
我现在想编写一个函数,使用折叠仅计算列表中的 Int 数。在上面的列表中,结果应该是“2”。
我知道使用 fold 计算所有元素的数量看起来像这样:
def count(list: List[Any]): Int =
list.foldLeft(0)((sum,_) => sum + 1)
我如何调整它以仅计算 Int 的出现次数?
通过 Int
筛选 list
并采用 size
可以满足您的需求,而且相当简单。
scala> list.filter(_.isInstanceOf[Int]).size
res0: Int = 2
另一个版本:
list.count(_.isInstanceOf[Int])
而且,如果您坚持使用 foldLeft
版本,这里有一个:
def count(list: List[Any]): Int =
list.foldLeft(0)((sum, x) => x match {
case _: Int => sum + 1
case _ => sum
})
假设我有以下任意类型的列表:
val list = List("foo", 1, "bar", 2)
我现在想编写一个函数,使用折叠仅计算列表中的 Int 数。在上面的列表中,结果应该是“2”。
我知道使用 fold 计算所有元素的数量看起来像这样:
def count(list: List[Any]): Int =
list.foldLeft(0)((sum,_) => sum + 1)
我如何调整它以仅计算 Int 的出现次数?
通过 Int
筛选 list
并采用 size
可以满足您的需求,而且相当简单。
scala> list.filter(_.isInstanceOf[Int]).size
res0: Int = 2
另一个版本:
list.count(_.isInstanceOf[Int])
而且,如果您坚持使用 foldLeft
版本,这里有一个:
def count(list: List[Any]): Int =
list.foldLeft(0)((sum, x) => x match {
case _: Int => sum + 1
case _ => sum
})