如果我从一个函数返回一个Seq [T],当它可能是空的时候,它还是一个Seq还是会出错?
换句话说,我是否需要将其包装在一个选项中,或者是否过度杀伤?
答案 0 :(得分:4)
虽然它可能会根据具体情况传达一些信息,但它通常有些过分。假设您有一个庞大的人员数据库,其中可能缺少某些数据。您可以编写如下查询:
def getChildren( p: Person ): Seq[Person]
但是如果它返回一个空序列,你就无法猜测数据是否缺失,或者数据是否可用,没有子代。与定义相反:
def getChildren( p: Person ): Option[Seq[Person]]
如果没有孩子,您将在数据缺失时获得None
Some(s)
s
其中{{1}}为空序列。
答案 1 :(得分:0)
Seq就像一个Monoid,它的形式为零。