Scala中的folder函数

问题描述 投票:0回答:1

下面的函数从给定列表中提取'N'个元素。它按预期工作。但是我不明白为什么在调用函数foldRight时需要给它键入“ [List [A]]”。已经使用这种类型声明了“ items”,并在其上调用了foldRight。因此,它是不需要的。但是如果没有它,就会产生语法错误。

您能帮忙为什么必须键入吗?

def first[A](items: List[A], count: Int): List[A] = {
  items.foldLeft[List[A]](Nil) { (a: List[A], i: A) =>
     if (a.size >= count) a else i :: a
  }.reverse
}
list scala functional-programming fold
1个回答
2
投票

由于NilNil没有携带任何有用的type信息来进行推理。使用List.empty[A]代替Nil,您将可以跳过键入。 Nil是单态的,您需要与List.empty[A]实际等效的多态等效项。

© www.soinside.com 2019 - 2024. All rights reserved.