scala - 更正 List[List[X]] 的 "empty"返回值

标签 scala functional-programming null

如果我有一个函数 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/

相关文章:

haskell - 为什么绑定(bind)的参数有责任统一其值?

C++ 编译时检查副作用

haskell - 如何使用 Scott 编码表示嵌套类型?

c - 检查任何值是否为 NULL 或空的最佳方法是什么?

scala - 如何使用scala从数据框中获取字符串列的最大长度?

scala - "val Class.Something(2,_) = doSomething()"是什么意思?

scala - 修剪Java中Apache Spark中的特殊字符

scala - 喷雾测试 gzip 解码

MySQL 默认值问题

java - 我需要在 OR 条件的两侧都检查 null 吗?