在Scala2.13中,我遇到了使用运算符#::进行模式匹配的问题,它在使用时显示错误Cannot resolve method #::.unapply,如下所示:
def exampleFunction(lazyList: LazyList[Int]):Unit =
lazyList match {
case LazyList() => println("End")
case head #:: tail => println(head); exampleFunction(tail) // Cannot resolve method #::.unapply
}
exampleFunction(LazyList(1,2,3,4,5,6,7,8))如果LazyList是泛型的,运算符将按预期工作:
def exampleFunction[A](lazyList: LazyList[A]):Unit =
lazyList match {
case LazyList() => println("End")
case head #:: tail => println(head); exampleFunction(tail)
}
exampleFunction(LazyList(1,2,3,4,5,6,7,8)) // output: 1 2 3 4 5 6 7 8 End为什么会出现这个问题,有办法解决吗?
发布于 2020-05-03 16:01:50
如果您使用的是IntelliJ,这可能是由于编辑器中的错误突出显示错误(换句话说,这是错误的),当代码成功编译时,IntelliJ的自定义错误突出显示过程会错误地发现问题。提供显式导入
import scala.collection.immutable.LazyList.#::似乎使编辑器的错误高亮显示很高兴,但是导入不应该是必要的。很少有其他建议去尝试
File | Invlidate Cachesrm -fr .idea的根,然后再导入项目。Preferences | Languages & Frameworks | Scala | Updates | Update channel | Nightly BuildsRegistry...中启用实验标志scala.highlighting.compiler.errors.in.editorhttps://stackoverflow.com/questions/59022570
复制相似问题