2016-01-09 12 views
7

に猫のライブラリを使用しているとき、私は猫Scalaのライブラリを使用していますし、IntelliJのIDEは、暗黙の使用に苦しんでいるように見える:で偽のエラーのIntelliJ

import cats.std.all._ 
import cats.Traverse.ops._ 

def useSequence[A](ls : List[Option[A]]) : Option[List[A]] = { 
    ls.sequence 
} 

:ここ

は簡単な例でありますIntelliJ、このコードは赤で強調表示されています。しかし、私はMake Projectまたはコマンドラインを使ってうまく構築できます。

今の誤差がある:タイプナッシングの

式[一覧[何]]期待されるタイプのオプションに準拠しません[一覧[]]

他の回のエラー以下のようなものです:

値のシーケンスがリストのメンバーではありません[オプション[A]]

これはIntelliJのバグですか、いくつか設定がありませんか?

私は、Scalaプラグインのバージョン2.0.4でIntelliJ 15.0.2を使用しています。

+5

:シーケンスが適用されるタイプ、すなわち(猫用の更新1.0)が含まれていintellijが型を推測するのが難しくなります(猫はあなたではなくマクロを使用しています)。 intellijが幸せにならないようにするには、 'ls.sequence [Option、A]'をいくつか追加する必要があります。 – Noah

答えて

0

これは、5月13日以来のIntelliJ/Scalaのプラグイン(SCL-10259 - False error (good code red): sequence from cats)オープンでオープンな問題である、上記@Noahコメントとして2016

、今の回避策は、コンテナの種類を提供することにより、IntelliJのを支援することですそれは、それだけで、そんなに推測することができ、基本的にはIntelliJのバグだとそれもそれを作るいくつかのマクロを使用するように、これは見え

import cats.instances.all._ 
import cats.Traverse.ops._ 

def useSequence[A](ls : List[Option[A]]) : Option[List[A]] = 
    ls.sequence[Option, A] 
関連する問題