我想知道函数heads
是否存在“函数式编程”原因不能在List中实现(或更常见地在TraversableLike中实现)。对我而言,heads
与tails
完全相反,但我必须遗漏一些东西。
由于Scala易于阅读,我会看到(对于List
案例):
def heads[T](li:List[T]):List[List[T]] = li match {
case Nil => Nil
case head::tail => (Nil::heads(tail)).map(head::_)
}
所以,我想到的这个功能没有实现的几个可能性:
head
表示List
的第一个元素,因此创建一个迭代所有头的函数是没有意义的,只有一个。那为什么不是函数prefixes
? 提前感谢您的回答。
答案 0 :(得分:8)
我认为你正在寻找内容。
head =第一个元素
last = last element
tail =除头部以外的所有人
tails = recurses tail
init =除上一个以外的所有
inits = recurses init
请参阅Collections API。
中特性Traversable下的说明