gpt4 book ai didi

Scala 如何使用模式匹配与非通用 LazyList?

转载 作者:行者123 更新时间:2023-12-03 16:50:27 25 4
gpt4 key购买 nike

在 Scala 2.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

为什么会出现这个问题,有没有办法解决?

最佳答案

如果您使用的是 IntelliJ,这可能是由于编辑器错误突出显示错误 SCL-15834: Highlighting error on case matching using operator #::换句话说,这是一个误报,其中代码编译成功,但是 IntelliJ 的 custom错误突出显示过程错误地识别了问题。提供显式导入

import scala.collection.immutable.LazyList.#::

似乎使编辑器错误突出显示快乐,但是导入应该不是必需的。很少有其他建议可以尝试
  • File | Invlidate Caches
  • 从项目的根 rm -fr .idea然后重新导入项目
  • 更新最前沿的 Scala 插件版本:Preferences | Languages & Frameworks | Scala | Updates | Update channel | Nightly Builds
  • Registry...启用实验标志 scala.highlighting.compiler.errors.in.editor
  • 关于Scala 如何使用模式匹配与非通用 LazyList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59022570/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com