2.8コレクションは新しくなっています。この署名はどのように見えますか? Scalazシーケンスに似ています

StackOverflow https://stackoverflow.com/questions/3851236

  •  27-09-2019
  •  | 
  •  

質問

私はAを見つけました ブログ投稿 今日、その言及はスカラズのものです 順序 働き。

あなたは次のように簡単なことをすることができませんでした:

if (l contains None) None else l

もしそうなら、この関数の署名はどのように見えますか? 含む seqlikeですよね?

また、ブログ投稿から、シーケンスはMAPに似たものになると思いましたが、一度壊れてしまうと思いました。このようなものはありますか?

役に立ちましたか?

解決

はい、特定のデータ構造に特化したシーケンス関数を間違いなく記述できます。ただし、Scalazバージョンは可能な限り一般的です。そのため、任意の組み合わせで機能します FG そのため 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 '抽象化を使用)。したがって、配定のオプションだけでなく動作します。

編集]修正

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top