通过贴图和平面贴图合成函数

  • 本文关键字:函数 平面 scala
  • 更新时间 :
  • 英文 :


我在大学学习scala,不知道如何使用map、flatmap和Option。下面是我实验室的几个函数。我知道如何实现第一个,但不知道如何处理第二个?所以,问题是:如何在不改变第二个函数签名的情况下实现它(使用map和flatmap(?

def testCompose[A, B, C, D](f: A => B)
(g: B => C)
(h: C => D): A => D = h compose g compose f
def testMapFlatMap[A, B, C, D](f: A => Option[B])
(g: B => Option[C])
(h: C => D): Option[A] => Option[D] = // help
_.flatMap(f).flatMap(g).map(h)

因为:

  • _-接收Option[A]
  • flatMap(f)-偷看内部,返回Option[B](flatMap()不会重新包装(
  • flatMap(g)-偷看内部,返回Option[C](flatMap()不会重新包装(
  • map(h)-窥视内部,返回D(map()将重新包裹它(

最新更新