2014-02-23 28 views
0

我已经在多个地方下面的代码在我的应用的情况下,部分功能避免默认逻辑

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

中的doSomething将在每个位置不同,但任何时候,我有一个无我不想做任何东西。

有没有一种简单的方法,以避免使用implicits或以其它方式使用case None =>

回答

2

您可以使用mapforeach - 如果您的OptionNone,这些将不会执行任何操作。两者之间的区别是,map将返回Optionforeach回报Unit

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

如果你放弃的结果,那么你可以使用foreach

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

如果你需要的结果doSomething,然后用map

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

这是首选的方法。 foreach专门用于辅助效果;地图是你正在做的变换,并希望保留一个输出。 – Damiya