16

私は猫のScalaライブラリを使用していますが、IntelliJ IDEは暗黙の使用に苦労しているようです:

簡単な例を次に示します。

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

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

IntelliJ では、このコードは赤で強調表示されます。Make Projectしかし、またはコマンドラインを使用して問題なくビルドできます。

現在、エラーは次のとおりです。

型 Nothing[List[Nothing]] の式は、予期される型 Option[List[A]] に準拠していません

それ以外の場合、エラーは次のようになります。

値シーケンスは List[Option[A]] のメンバーではありません

これは IntelliJ のバグですか、それとも構成が不足していますか?

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

4

1 に答える 1

5

これは、IntelliJ/Scala プラグイン ( SCL-10259 - False error (good code red): sequence from cats ) で未解決の問題であり、2016 年 5 月 13 日から未解決です。

上記の @Noah のコメントのように、現時点での回避策は、シーケンスが適用されるコンテナーの型と含まれる型を提供することで IntelliJ を支援することです (例: (cats 1.0 用に更新) :

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

def useSequence[A](ls : List[Option[A]]) : Option[List[A]] = 
  ls.sequence[Option, A]
于 2018-03-09T08:05:11.493 に答える