避免案例部分功能的默认逻辑

时间:2014-02-23 23:03:55

标签: scala

我的应用程序中的多个位置都有以下代码

(i: Option) => {
    case Some(i) => // doSomething with i
    case None => 
}

doSomething在每个位置都会有所不同,但只要我有“无”,我就不想做任何事情。

是否有一种简单的方法可以避免使用隐含或其他方式使用case None =>

2 个答案:

答案 0 :(得分:4)

如果您放弃了结果,则可以使用foreach

o.foreach(i => doSomething(i))

如果您需要doSomething的结果,请使用map

o.map(i => doSomething(i))

答案 1 :(得分:2)

您可以使用mapforeach - 如果OptionNone,则这些操作无效。两者之间的区别在于map将返回Optionforeach会返回Unit

iOpt.map(i => /* doSomething with i */) // does nothing and returns a None if iOpt is a None