[英]For comprehensions scala
我正在學習 scala,現在我想了解如何將壓縮用於 function 組合。 這是一個 function 我應該在不更改其簽名的情況下實現它。 而且我幾乎完成了,但我不知道如何處理其中的 None 。 你能告訴我如何修改它以獲得正確的 None 處理嗎? 或者也許我完全錯了,並且以另一種方式使用理解來組合 scala 中的函數? 謝謝。
def testForComprehension[A, B, C, D](f: A => Option[B])
(g: B => Option[C])
(h: C => D): Option[A] => Option[D] = for { first <- _
second = f(first).get
third = g(second).get } yield h(third)
對於理解是關於Option
, List
, Future
(任何具有map
, flatMap
和filter
等方法的東西),而不是特別的功能。 你不應該專門為了理解而做.get
。
您可能需要的是以下
def testForComprehension[A, B, C, D](
f: A => Option[B]
)(g: B => Option[C])(h: C => D): Option[A] => Option[D] = { v =>
for {
first <- v
second <- f(first)
third <- g(second)
} yield h(third)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.