3

当某些条件不满足时,我有一个函数应该不返回任何内容(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);
    }
4

1 回答 1

3

在 vavr 中有一个类型,它被称为Option. 如果没有错误可以返回Option.none(),如果有错误则返回Option.some(errorMessage)

如果您仍想使用Either,我建议您将左侧用于错误,将右侧用于值(快乐路径),因为Either右偏的,因此mapand方法仅在它是正确值时才flatMap起作用。在您的情况下,由于没有要返回的值(即 void),您可以使用, 并在成功的情况下返回,因为它是该类型的唯一居民(null 是 Java 中所有非原始类型的居民,截至现在,不幸的是)。EitherEither<String, Void>Either.right(null)nullVoid

或者你可以引入一个新的类型,称为Unit一个单一的居民(即单例),Either<String, Unit>用于你的返回类型并返回Either.right(Unit.instance())来表示缺乏有意义的返回值并避免返回null值,因为返回null值有点难看。

于 2019-08-28T18:16:31.830 回答