kun-song / Functional-Programming-in-Scala-Specialization

https://www.coursera.org/specializations/scala
0 stars 0 forks source link

Option 用法 #3

Open kun-song opened 6 years ago

kun-song commented 6 years ago

Option 也是集合类,只不过只能容纳 0 或 1 个元素,也拥有 flatMap map 等函数,可以构建基于 Option 的函数:

def sum(x: Option[Int], y: Option[Int]): Option[Int] =
  x.flatMap(a ⇒ y.map(b ⇒ a + b))

上面的 sum 函数使用 flatMapmap 实现,只有当两个输入参数都是 Some 时,结果才为 Some,否则结果为 None,该实现看起来比较繁琐,可以使用 for 解析重构如下:

def sum2(x: Option[Int], y: Option[Int]): Option[Int] =
  for {
    a ← x
    b ← y
  } yield a + b