我真的很难理解这行代码。有人可以详细解释一下吗?
def sequence[A](aos: List[Option[A]]): Option[List[A]] =
aos.foldRight[Option[List[A]]](Some(Nil))((a,acc) => map2(a,acc)(_ :: _))
仅用一小段代码很难解释,但我会尝试一下。
说明:该函数试图在 上实现sequence
操作List[Option[A]]
。这种操作是FP(我建议你看一下在发现一个普遍的实现非常常见的猫科动物,一般将其转换类型F[G[A]]
到G[F[A]]
它专门转换,在你的榜样List[Option[A]]
的Option[List[A]]
。
更新:您必须指定Option[List[A]]
以确保编译器将推断出正确的类型。由于 ADT 在 Scala 中的实现方式,如果您不指定返回类型,编译器将推断Some[List[Nothing]]
为您的返回类型。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句