将选项中的呼叫链接在一起的模式

我发现我经常不得不将在上工作的函数链接在一起,Option并返回一个Option看起来像这样的函数

if(foo.isDefined) someFunctionReturningOption(foo.get) else None

有没有更清洁的方法可以做到这一点?对于更复杂的变量,此模式变得非常冗长。

我在必须处理可选数据的表单处理代码中看到了很多。None如果值是,则将插入,如果有值,则将进行None某些转换(可能会失败)。

这非常类似于为C#建议?.运算符

迈克尔·扎亚克(Michael Zajac)

您可以使用flatMap

foo.flatMap(someFunctionReturningOption(_))

或出于理解:

for {
    f <- foo
    r <- someFunctionReturningOption(f)
} yield r

当将这些函数的多个实例链接在一起时,因为它们会被糖化为flatMaps ,因此最好是具有理解力

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章