我想使用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]是使用類型歸屬的替代方法。 –