【发布时间】:2017-04-01 06:34:50
【问题描述】:
我有一个将String 作为输入的方法,还应该返回一个String。
以下 ASCII 艺术呈现逻辑流程:
Option<A> optA = finder.findA(input);
optA
/\
isEmpty() / \ isDefined()
/ \
"ERR_1" Option<B> optB = finder.findB(optA.get().bid);
/ \
isEmpty() / \ isDefined()
/ \
"ERR_2" opt2.get().id
基本上对于给定的input,我正在寻找A 对象,该对象以Option 形式返回。然后是A 存在我正在寻找B - 也包裹在Option 中,否则返回ERR_1。然后如果存在B,则返回它的id,否则返回ERR_2。
我想知道如何以一种简洁明了的方式(没有任何 ifology)使用可选项(或者可能是模式匹配?)来实现它 - 可能是单行。
谁能给点建议?
可以在here找到试用的源代码。
【问题讨论】:
-
Optional<A>和Optional<B>彼此不相关。你是说Optional<A>的存在取决于Optional<B>的存在? -
@Makoto:
Optional<A>可能存在,即使Optional<B>不存在。 -
我现在看到了;我看着图表很有趣。
标签: java functional-programming java-8 optional vavr