this blog曾經是一個有用的Scala選項備忘單,但似乎已被刪除。有沒有人保存過它?如何理解Option作爲模式匹配的操作?
回答
結束時,你可能會得到archive.org完整版(含引進)。
存檔fu!多麼有用的技巧。 –
@ som-snytt:問題是「有人救了它嗎?」。我能做什麼? – senia
這不是諷刺,我給了+1!對不起,它確實聽起來沒有聲音。我甚至讀過鏈接,並對另一個答案提供了不同的評論。 –
注意:senia has provided the whole original post,其中包括介紹和cheatsheet(這也是下面在這個答案)。
This blog did!(我是無黨派的)。不斷有幫助的cheatsheet:
flatMap:
// This code is equivalent to:
// option.flatMap(foo(_))
option match {
case None => None
case Some(x) => foo(x)
}
扁平化:
// This code is equivalent to:
// option.flatten
option match {
case None => None
case Some(x) => x
}
地圖:
// This code is equivalent to:
// option.map(foo(_))
option match {
case None => None
case Some(x) => Some(foo(x))
}
的foreach:
// This code is equivalent to:
// option.foreach(foo(_))
option match {
case None => {}
case Some(x) => foo(x)
}
isDefined:
// This code is equivalent to:
// option.isDefined
option match {
case None => false
case Some(_) => true
}
的isEmpty:
// This code is equivalent to:
// option.isEmpty
option match {
case None => true
case Some(_) => false
}
的forall:
// This code is equivalent to:
// option.forall(foo(_))
option match {
case None => true
case Some(x) => foo(x)
}
存在:
// This code is equivalent to:
// option.exists(foo(_))
option match {
case None => false
case Some(x) => foo(x)
}
否則容易:
// This code is equivalent to:
// option.OrElse(foo)
option match {
case None => foo
case Some(x) => Some(x)
}
getOrElse:
// This code is equivalent to:
// option.getOrElse(foo)
option match {
case None => foo
case Some(x) => x
}
toList:
// This code is equivalent to:
// option.toList
option match {
case None => Nil
case Some(x) => x :: Nil
}
coflatMap *:
// This code is equivalent to:
// option.coflatMap(foo(_))
option match {
case None => None
case Some(_) => Some(foo(option))
}
複製*:
// This code is equivalent to:
// option.duplicate
option match {
case None => None
case Some(_) => Some(option)
}
*:不幸的是,coflatMap和duplicate不是標準庫的一部分。您需要自己寫或使用Scalaz。
的摘錄
記住所有這些而不必查找它的技巧是將選項想象爲包含零個或一個元素的專用集合。 –
我想說的是,你放棄了最後幾個你可能沒有耿耿於懷的人,但是我必須修改它,說你的消息來源將他們拒之門外。 –
@JCracknell這如何符合捲餅比喻? –
- 1. Haskell中的模式匹配操作
- 2. 與操作數匹配的模式
- 3. 模式匹配和字符串操作
- 4. 理解模式匹配的列表
- 5. 瞭解操作Singleton模式
- 6. 爲什麼操作符和操作數的類型不匹配?
- 7. 我能正確理解操作系統的雙模式操作嗎?
- 8. PHP SoapClient:操作不匹配
- 9. 表格的匹配形式:Option {..} < -
- 10. Lua:模式匹配多字符與?重複操作符
- 11. Lua字符串操作模式匹配替代「|」
- 12. 如何解決這個非工作正則表達式模式匹配?
- 13. 模式匹配解析器
- 14. 在swift中作爲函數表達式的模式匹配
- 15. 如何理解操作順序
- 16. 如何檢查sendmail的操作模式?
- 17. 模式匹配不起作用
- 18. 匹配模式不起作用
- 19. SED匹配模式\ tTEXT \ t不工作
- 20. 神交模式匹配不工作
- 21. HTML模式匹配不工作
- 22. 模式匹配java:不起作用
- 23. robots.txt模式匹配不起作用
- 24. BASH:模式匹配不起作用
- 25. 分配模式綁定操作符
- 26. awk如何匹配和〜操作符一起工作?
- 27. Go Language中的模式匹配如何工作?
- 28. Awk對字符串的模式匹配如何工作?
- 29. 批處理上下文操作模式
- 30. 模式匹配序列理解的慣用方式是什麼?
也許表達的問題是:如何理解ops作爲模式匹配選項?避免關閉。 –
@ som-snytt謝謝你的建議,我很難想出一個合適的標題。 –