我正在使用猫Scala库,IntelliJ IDE似乎在使用implicits时遇到了困难:
这是一个简单的例子:
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中的错误还是我错过了一些配置?
我正在使用IntelliJ 15.0.2和Scala插件的2.0.4版。
答案 0 :(得分:5)
这是自2016年5月13日开始的IntelliJ / Scala插件(SCL-10259 - False error (good code red): sequence from cats)中的一个未解决的问题。
正如@Noah上面评论的那样,现在的解决方法是通过提供容器的类型和应用序列的包含类型来帮助IntelliJ,即(为猫1.0更新):< / p>
import cats.instances.all._
import cats.Traverse.ops._
def useSequence[A](ls : List[Option[A]]) : Option[List[A]] =
ls.sequence[Option, A]