我有兩種不同類型的用戶;我們稱它們爲BasicUser
和EnrichedUser
。如何從一個函子去一個效果到一個函子的效果?
我得到具有cats.Functor
實例的容器C
內Foo
用戶類型的值:
val basicUserF: C[BasicUser] = getBasicUser(…)
現在,我想映射在這個值(使用仿函數實例)打開包含BasicUser
到EnrichedUser
用戶,留在容器:
import cats.syntax.all._
val enrichedUserF: C[EnrichedUser] = basicUserF.map(user => enrichUser(user))
然而,enrichUser
不返回EnrichedUser
,但老鼠她OptionT[Future, EnrichedUser]
,所以我結束了以下類型:
val enrichedUserThing: C[OptionT[Future, EnrichedUser]] = …
我怎樣才能從這種類型OptionT[Future, C[EnrichedUser]]
(我最終會變成一個JSON序列化阿卡HTTP響應)得到什麼?
死了這個幫助https://stackoverflow.com/questions/20874186/scala-listfuture-to-futurelist-disregarding-failed-futures? –
@ n.m。我不確定。我看不出Future.sequence如何幫助我...... – lunaryorn
如果你在'C'上加了一個'Traverse'約束,你可以使用'sequence'來完成你想要的。 –