组合算子:and_then
map()
以链式调用的方式来简化 match
语句。然而,如果以返回类型是 Option<T>
的函数作为 map()
的参数,会导致出现嵌套形式 Option<Option<T>>
。这样多层串联
调用就会变得混乱。所以有必要引入 and_then()
,在某些语言中它叫做 flatmap。
and_then()
使用被 Option
包裹的值来调用其输入函数并返回结果。 如果 Option
是 None
,那么它返回 None
。
在下面例子中,cookable_v2()
会产生一个 Option<Food>
。如果在这里使用 map()
而不是 and_then()
将会得到 Option<Option<Food>>
,这对 eat()
来说是一个
无效类型。