我有一个函数应该返回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
的形式返回什么?
您怎么看?
答案 0 :(得分:2)
第一个选项的唯一问题是很容易忘记在返回结果上检查isEmpty
。如果大多数客户自然会使用空地图做正确的事情(例如,因为他们只是迭代它,或者获得错误数量),这是最好的。如果您将方法命名为getErrors
(如@senia所述),则选项2也可以接受,选项3也是Either[Map[String, Seq[String]], Unit]
。