IntelliJ IDEA的Scala插件多次抱怨“类型不匹配”,即使有问题的代码编译得非常好。我发现这很烦人,并想禁用此功能。我没有在设置中搜索任何相关选项。我该如何摆脱它?
答案 0 :(得分:10)
单击此符号关闭'Type Aware Highlighting'可能会有所帮助。
修改
还可以启用和禁用许多Scala特定检查。可以通过单击上面第一个屏幕截图中显示的“Inspector”图标(位于“Type Aware”图标左侧)并单击“在弹出对话框中配置检查”来访问这些文件。
答案 1 :(得分:4)
您可以通过点击屏幕右下角带圆顶礼帽的小男人完全关闭错误突出显示,并选择“无”突出显示级别。但是你会失去所有错误突出显示,而不仅仅是让你讨厌的错误。 (对不起,StackOverflow不允许我发布图片以准确显示在哪里找到“Hector the Inspector!”
答案 2 :(得分:3)
似乎有一种方法可以为IntelliJ中的Scala代码区域禁用类型识别突出显示。 JetBrains开发人员在SCL-10983中提到了这一点,后来我在Working with Type-Aware Highlighting找到了一个文档。
让我们采取以下代码(故意明白错误):
class Data {
/*_*/
def data: Int = this
/*_*/
def dataAgain: Int = this
}
只有第二个错误会以红色突出显示,/*_*/
中包含的第一个错误将被忽略。
答案 3 :(得分:1)
@rxg:这是一个用于演示问题的小测试案例:
rows
的类型为IndexedSeq[Row]
,其中Row
来自Apache POI的Excel库。 traverse
如果来自Scalaz的函数。 Validation
是Scalaz的数据结构。
GryphonError
是我们代码库中的ADT。
rows.zipWithIndex.traverse[({type L[X] = Validation[Seq[GryphonError], X]})#L, Seq[Any]] { case (row, r) =>
// some stuff
}
scalac编译好这段代码。 IDEA的类型检查员抱怨:
Type mismatch, expected: ((Row, Int) => F[B])
actual: ((Row, Int) => F[IndexedSeq[B]])