我一直在Scala上編寫了2年,在代碼中使用了很多Option。我覺得這很清楚,容易理解並且可以很容易地處理。這是一個正常的方法:我認爲這是對待Scala選項的最佳方式,但我想問一下是否有更好的方法來做到這一點?Scala選項模式匹配的替代品?
2
A
回答
3
這實際上取決於用例。一般的模式我走時,我有一個選擇,我需要或者申請的操作Some
或None
這將產生相同的值是使用Option.fold
:
val opt = Some(1)
val res: Int = opt.fold(0)(existing => existing + 1)
如果你不喜歡fold
,map
和getOrElse
會做相反的是同樣的伎倆:
val res: Int = opt.map(_ + 1).getOrElse(0)
如果我想繼續Option
容器內,map
的伎倆。
+0
這是真的,但這不是出於一點不直觀嗎? –
+0
@SohumSachdev你的意思是「摺疊」?我覺得它非常直觀,但我認爲這是一般意見。我使用'map + getOrElse'添加了另一個模式,也許你會發現更直觀。 –
相關問題
- 1. Scala選項[(A,B)]模式匹配
- 2. Scala選項:map vs模式匹配
- 3. Scala:模式匹配代碼
- 4. scala模式匹配
- 5. 模式匹配的Scala迭代器
- 6. JBehave模式的變體 - 試圖匹配的替代品
- 7. Scala的模式匹配
- 8. Scala中的模式匹配
- 9. Scala的模式匹配
- 10. Postgresql模式匹配選項
- 11. 模式匹配案例中的模式替代scala錯誤非法變量
- 12. 模式匹配的替代語言
- 13. scala Class.forName模式匹配
- 14. Scala:異常模式匹配
- 15. Scala:模式匹配Seq [Nothing]
- 16. Scala選項高階函數而不是模式匹配
- 17. Mysql反向模式匹配 - 替代?
- 18. 匹配Scala中的BitSet的模式
- 19. 替換爲模式匹配
- 20. 意外Scala的模式匹配語法
- 21. 與清單匹配的Scala模式
- 22. Scala的模式匹配上(試,試)
- 23. 模式匹配中的Scala擦除
- 24. 自動拆箱Scala的模式匹配
- 25. Scala中的[Any]模式匹配
- 26. 與元組匹配的Scala模式
- 27. 與集合匹配的Scala模式
- 28. scala.collection.script.Message上的scala模式匹配
- 29. Scala/Unfiltered中的模式匹配語法
- 30. Scala的模式匹配在2.10
我一直髮現託尼莫里斯的[Option Cheat Sheet](http://blog.tmorris.net/posts/scalaoption-cheat-sheet/)是關於此事的非常可讀的參考 – millhouse
這真棒,乾杯! –