2014-02-23 103 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