空的Seq还是Seq吗?

时间:2014-03-17 13:06:43

标签: scala

如果我从一个函数返回一个Seq [T],当它可能是空的时候,它还是一个Seq还是会出错?

换句话说,我是否需要将其包装在一个选项中,或者是否过度杀伤?

2 个答案:

答案 0 :(得分:4)

虽然它可能会根据具体情况传达一些信息,但它通常有些过分。假设您有一个庞大的人员数据库,其中可能缺少某些数据。您可以编写如下查询:

def getChildren( p: Person ): Seq[Person]

但是如果它返回一个空序列,你就无法猜测数据是否缺失,或者数据是否可用,没有子代。与定义相反:

def getChildren( p: Person ): Option[Seq[Person]]

如果没有孩子,您将在数据缺失时获得None Some(s) s其中{{1}}为空序列。

答案 1 :(得分:0)

Seq就像一个Monoid,它的形式为零。