当某些条件不满足时,我有一个函数应该不返回任何内容(void)或字符串。
我试试这条线 Either.left(Void)
private Either<Void,String> processOrReturnErrorMessage(){
//Do something and in some case return a message of failed conditions
return Either.left(Void);
}
在 vavr 中有一个类型,它被称为Option
. 如果没有错误可以返回Option.none()
,如果有错误则返回Option.some(errorMessage)
。
如果您仍想使用Either
,我建议您将左侧用于错误,将右侧用于值(快乐路径),因为Either
是右偏的,因此map
and方法仅在它是正确值时才flatMap
起作用。在您的情况下,由于没有要返回的值(即 void),您可以使用, 并在成功的情况下返回,因为它是该类型的唯一居民(null 是 Java 中所有非原始类型的居民,截至现在,不幸的是)。Either
Either<String, Void>
Either.right(null)
null
Void
或者你可以引入一个新的类型,称为Unit
一个单一的居民(即单例),Either<String, Unit>
用于你的返回类型并返回Either.right(Unit.instance())
来表示缺乏有意义的返回值并避免返回null
值,因为返回null
值有点难看。