为返回错误映射的函数选择正确的返回类型

时间:2014-02-11 05:06:20

标签: scala

我有一个函数应该返回Map[String, Seq[String]]作为错误的序列(如果错误)或返回成功(可能是Unit) 。我想知道,它的最佳回报类型是什么?

def foo1(a: Int): Map[String, Seq[String]]
def foo2(a: Int): Option[Map[String, Seq[String]]]
def foo3(a: Int): Either[Map[String, Seq[String]], ???]
//def foo4(a: Int): something else?

如果是第一种情况,如果没有错误则必须返回Map["", Seq()],在我看来,它看起来并不优雅。在第二种情况下,它将返回None,这没关系,但似乎是多余的。对于第三种情况也是如此,但还有一个问题 - 我将以Right的形式返回什么?

您怎么看?

1 个答案:

答案 0 :(得分:2)

第一个选项的唯一问题是很容易忘记在返回结果上检查isEmpty。如果大多数客户自然会使用空地图做正确的事情(例如,因为他们只是迭代它,或者获得错误数量),这是最好的。如果您将方法命名为getErrors(如@senia所述),则选项2也可以接受,选项3也是Either[Map[String, Seq[String]], Unit]

相关问题