如果我有一个函数 List[A] => List[List[A]]
并且需要返回一个“空”值,那么在理论上是否有以下偏好
a) 无
b) 列表(无)
...还是取决于功能?
举个具体的例子,我可以实现一个函数,将一个列表拆分成长度为 n
或更短的子列表,如下所示:
def sublists[A](xs: List[A], n: Int): List[List[A]] = {
val (ys, zs) = xs.splitAt(n)
if (zs.isEmpty) ys :: Nil
else ys :: sublists(zs, n)
}
如果 xs
为空,则返回 List(Nil)
。我是否需要检查 xs
是否为空并返回 Nil
,以使此函数正确?
最佳答案
毫无疑问,List 的正确空值是空 List,无论 List 元素的类型是什么。
对于更详细的类型也是如此。包含空集的集合与空集非常不同,等等。
这样想:一个列表结果让你问:我们有多少结果?如果您使用一个包含空列表的列表作为空值,那么答案将是错误的 1。
关于scala - 更正 List[List[X]] 的 "empty"返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19962566/