首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala如何与非泛型LazyList使用模式匹配?

Scala如何与非泛型LazyList使用模式匹配?
EN

Stack Overflow用户
提问于 2019-11-24 21:25:24
回答 1查看 835关注 0票数 5

在Scala2.13中,我遇到了使用运算符#::进行模式匹配的问题,它在使用时显示错误Cannot resolve method #::.unapply,如下所示:

代码语言:javascript
复制
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是泛型的,运算符将按预期工作:

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-03 16:01:50

如果您使用的是IntelliJ,这可能是由于编辑器中的错误突出显示错误(换句话说,这是错误的),当代码成功编译时,IntelliJ的自定义错误突出显示过程会错误地发现问题。提供显式导入

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59022570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档