私は2種類のユーザーを持っています。それらをBasicUser
とEnrichedUser
と呼びましょう。ファンクション上のファンクタからファンクタ上のエフェクトに移動するにはどうすればよいですか?
私はcats.Functor
インスタンスを持っているコンテナC
内部Foo
ユーザタイプの値を取得:今、私は含まをオンにする(ファンクタのインスタンスを使用して)この値の上にマッピングしたいと思います
val basicUserF: C[BasicUser] = getBasicUser(…)
をコンテナに滞在EnrichedUser
ユーザーへBasicUser
、:
import cats.syntax.all._
val enrichedUserF: C[EnrichedUser] = basicUserF.map(user => enrichUser(user))
しかし、enrichUser
はEnrichedUser
を返しませんが、ラット彼女OptionT[Future, EnrichedUser]
ので、私は次のタイプで終わる:
val enrichedUserThing: C[OptionT[Future, EnrichedUser]] = …
私は(私が最終的にJSONシリアライズアッカのHTTPレスポンスに変わります)OptionT[Future, C[EnrichedUser]]
にこのタイプから取得できますか?
このヘルプは壊れています。https://stackoverflow.com/questions/20874186/scala-listfuture-to-futurelist-disregarding-failed-futures? –
@ n.m。よく分かりません。 Future.sequenceが私にどのように役立つのか分かりません... – lunaryorn
'Traverse'制約を' C'に追加すると、 'sequence'を使うことができます。 –