- 是
fruit
一个 Maybe 类型 - 如果水果是 a
apple
并且是甜的(用函数测试testSweet
),则触发过程 A - 如果不甜或者
fruit
什么都不是,则执行过程 B
这是伪代码,
case fruit of
Just apple ->
if testSweet apple then
<ProcessA>
else
<ProcessB>
Nothing ->
<ProcessB>
<ProcessB>
但这里看起来有重复,有什么办法可以解决这个问题吗?我认为最佳方法是代码中只有一个。
您可以使用一个保护和一个捕获所有问题的后备方案:
最后一种情况
_
将匹配Nothing
和Just non_sweet
情况。您可以使用
Maybe
的Foldable
实例:但是,与其他现有答案中的模式匹配不同,您将无法访问
apple
内部ProcessA
。 如果需要,您可以改用find
,但我认为与模式匹配和保护方式相比,这有点模糊。