2017-08-28 64 views
2

我一直在Scala上編寫了2年,在代碼中使用了很多Option。我覺得這很清楚,容易理解並且可以很容易地處理。這是一個正常的方法:我認爲這是對待Scala選項的最佳方式,但我想問一下是否有更好的方法來做到這一點?Scala選項模式匹配的替代品?

+0

我一直髮現託尼莫里斯的[Option Cheat Sheet](http://blog.tmorris.net/posts/scalaoption-cheat-sheet/)是關於此事的非常可讀的參考 – millhouse

+0

這真棒,乾杯! –

回答

3

這實際上取決於用例。一般的模式我走時,我有一個選擇,我需要或者申請的操作SomeNone這將產生相同的值是使用Option.fold

val opt = Some(1) 
val res: Int = opt.fold(0)(existing => existing + 1) 

如果你不喜歡foldmapgetOrElse會做相反的是同樣的伎倆:

val res: Int = opt.map(_ + 1).getOrElse(0) 

如果我想繼續Option容器內,map的伎倆。

+0

這是真的,但這不是出於一點不直觀嗎? –

+0

@SohumSachdev你的意思是「摺疊」?我覺得它非常直觀,但我認爲這是一般意見。我使用'map + getOrElse'添加了另一個模式,也許你會發現更直觀。 –