【发布时间】:2015-07-01 22:01:10
【问题描述】:
我有一些看起来像这样的代码:
f(a).and_then(|b| {
g(b).and_then(|c| {
h(c).map(|d| {
do_something_with(a, b, c, d)
})
})
})
其中f、g 和h 返回Option 值。我需要在do_something_with 计算中使用所有中间值(a、b、c 和d)。压痕非常深。有一个更好的方法吗?理想情况下,它看起来像这样(这当然行不通):
try {
let b = f(a);
let c = g(b);
let d = h(c);
do_something_with(a, b, c, d)
} rescue NonexistentValueException {
None
}
【问题讨论】:
-
所有函数都返回相同的选项类型吗?还是他们改变了类型?
-
如果它们是:这是一个无宏的解决方案:is.gd/eItCTh 任何其他解决方案都需要值泛型或可变参数泛型或像 FixedSizeArray 这样的特性,仅用于元组