2.8コレクションは新しくなっています。この署名はどのように見えますか? Scalazシーケンスに似ています
-
27-09-2019 - |
解決
はい、特定のデータ構造に特化したシーケンス関数を間違いなく記述できます。ただし、Scalazバージョンは可能な限り一般的です。そのため、任意の組み合わせで機能します F
と G
そのため F[G[A]] => G[F[A]]
可能です。
あなたが探している他の関数は呼ばれます traverse
. 。署名があります
def traverse[F[_]:Traverse,G[_]:Applicative,A,B](m: F[A], f: A => G[B]): G[F[B]]
x.traverse(f)
に相当します x.map(f).sequence
.
x.sequence
に相当します x.traverse(a => a)
他のヒント
はい、できますが、それは次のとおりです。
if (l contains None) None else Some(l.map(_.get))
ブログ投稿のコードは、その機能を可能な限り一般的に記述しようとします(Scalaz '抽象化を使用)。したがって、配定のオプションだけでなく動作します。
編集]修正
所属していません StackOverflow