吉
我发现我经常不得不将在上工作的函数链接在一起,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
当将这些函数的多个实例链接在一起时,因为它们会被糖化为flatMap
s ,因此最好是具有理解力。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句