如何 return void 或 String with vavr
How to return Either a void or a String with vavr
我有一个函数,当某些条件不满足时,它应该 return 什么都没有(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
。没有错误可以returnOption.none()
,有错误可以returnOption.some(errorMessage)
如果您仍想使用 Either
,我建议使用左侧表示错误,使用右侧表示值(happy 路径),因为Either
是 右偏 ,因此 map
和 flatMap
方法仅在 Either
是 右时才作用于 Either
值。在您的情况下,由于 return 没有价值(即无效),您可以使用 Either<String, Void>
和 return Either.right(null)
作为成功案例,因为 null
是类型 Void
的唯一居民(null 是 Java 中所有非原始类型的居民,不幸的是,到目前为止)。
或者你可以引入一个名为 Unit
的新类型,只有一个居民(即单身人士),使用 Either<String, Unit>
作为你的 return 类型,return Either.right(Unit.instance())
表示缺少有意义的 return 值并避免 returning null
值,因为 returning null
值有点难看。
我有一个函数,当某些条件不满足时,它应该 return 什么都没有(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
。没有错误可以returnOption.none()
,有错误可以returnOption.some(errorMessage)
如果您仍想使用 Either
,我建议使用左侧表示错误,使用右侧表示值(happy 路径),因为Either
是 右偏 ,因此 map
和 flatMap
方法仅在 Either
是 右时才作用于 Either
值。在您的情况下,由于 return 没有价值(即无效),您可以使用 Either<String, Void>
和 return Either.right(null)
作为成功案例,因为 null
是类型 Void
的唯一居民(null 是 Java 中所有非原始类型的居民,不幸的是,到目前为止)。
或者你可以引入一个名为 Unit
的新类型,只有一个居民(即单身人士),使用 Either<String, Unit>
作为你的 return 类型,return Either.right(Unit.instance())
表示缺少有意义的 return 值并避免 returning null
值,因为 returning null
值有点难看。