包含选项的列表/数组

rfr*_*lli -4 monads scala optional

哪个在实践中更好?有可选列表或列表中有可选项吗?

目前我正在关注一个可选列表.

列出[选项[T]]或选项[列表[T]]?

编辑:

我遇到的问题是我有crud操作,我正在返回可选类型.我有一种情况,我有一个方法,只进行一次查找,我想利用它来创建一个返回列表的函数.我仍然在用scala弄湿我的脚,所以我很好奇最佳做法是什么.

例:

def findOne(id: Int): Option[T]
Run Code Online (Sandbox Code Playgroud)

无论实现我想用它来做这样的事情,但哪个更好?它们似乎都很奇怪.也许我总是缺少一些东西:

def find(ids: List[Int]) : Option[List[T]]
Run Code Online (Sandbox Code Playgroud)

VS

def find(ids: List[Int]) : List[Option[T]]
Run Code Online (Sandbox Code Playgroud)

Dao*_*Wen 6

这两种类型意味着非常不同的东西.List[Option[T]]看起来像中间结果,你会flatten.(flatMap在这种情况下,我会考虑使用.)

第二种类型,Option[List[T]]表示可能有也可能没有列表.当您需要区分"无结果"案例和"结果是空列表"案例时,这将是一个很好的类型.

我想不出两种类型都有意义的情况.