【发布时间】:2014-02-18 05:51:39
【问题描述】:
假设我有一个函数getCustomers 和getOrdersByCustomer。
现在我可以轻松定义一个函数getOrdersOfAllCustomers
到目前为止,一切都很好,但是如果 getCustomer 和 getOrdersByCustomer 返回列表中的 Options 呢?
现在我想实现两种不同风格的getOrdersOfAllCustomers():
- 如果一个函数返回None,则返回None;
- 如果
getCustomer返回None,则返回None,不关心getOrdersByCustomer是否返回None。
您建议如何实施?
【问题讨论】:
-
返回 None 而不是空 List 真的有意义吗?只是好奇,如果你正在设计这个 api。
-
我想区分错误和空列表。
-
@Michael 但是抛出的错误与空列表无关。对于错误传播,可能是 Either 类型在这里更有用。
Either[Exception, List[Customer]]有道理。 -
Try似乎比Either或Option更具描述性。 -
@Dylan 我很乐意在另一个问题中讨论
Try和Either:))
标签: scala functional-programming monads