我的代码包含相当多的双重选项类型;到目前为止,我一直很成功地使用Option.map函数来消除在许多地方匹配Some和None并将它们视为提升的类型的需要,但是在以下情况下不确定该怎么做:
let multiplyTwoOptions option1 option2 : double option =
if not (option1.IsSome && option2.IsSome) then None
else Some (option1.Value * option2.Value)
我看到过不应该以这种方式使用IsSome,但是替代方法(就我所知,按顺序进行模式匹配似乎很冗长)。我对F#还比较陌生,想知道是否有更具代表性的方法?我觉得也许需要像Option.fold2这样的东西来同时处理两个选项,但实际上并没有。