Open kun-song opened 6 years ago
Option 也是集合类,只不过只能容纳 0 或 1 个元素,也拥有 flatMap map 等函数,可以构建基于 Option 的函数:
Option
flatMap
map
def sum(x: Option[Int], y: Option[Int]): Option[Int] = x.flatMap(a ⇒ y.map(b ⇒ a + b))
上面的 sum 函数使用 flatMap 和 map 实现,只有当两个输入参数都是 Some 时,结果才为 Some,否则结果为 None,该实现看起来比较繁琐,可以使用 for 解析重构如下:
sum
Some
None
for
def sum2(x: Option[Int], y: Option[Int]): Option[Int] = for { a ← x b ← y } yield a + b
Option
也是集合类,只不过只能容纳 0 或 1 个元素,也拥有flatMap
map
等函数,可以构建基于Option
的函数:上面的
sum
函数使用flatMap
和map
实现,只有当两个输入参数都是Some
时,结果才为Some
,否则结果为None
,该实现看起来比较繁琐,可以使用for
解析重构如下: