我想使用fold
或map
操作而不是match
为Option
。折叠操作的斯卡拉选项
我有一个选项val ao: Option[String] = xxxx
和功能f: (String => Future[Option[T]])
如果我做的模式匹配:
ao match {
case Some(t) => f(t)
case None => Future.successful(None)
}
,如果我做的地图是:
ao map f getOrElse Future.successful(None)
但是当我做倍,我有一些编译器错误:
ao.fold(Future.successful(None))(t => f(t))
关于抱怨expression Future[Option[T]] doesn't confirm to Future[None.type]
那么,为什么地图在这里工作,但没有折叠,我错过了这里的东西?
使用Option.empty [T]是使用类型归属的替代方法。 –