gpt4 book ai didi

scala - 在 IntelliJ 中使用 Scala 工作表很困难

转载 作者:行者123 更新时间:2023-12-03 02:32:48 24 4
gpt4 key购买 nike

我正在学习 Scala 函数式编程原理类(class)但我在 IntelliJ 中使用 Scala Worksheets 进行快速测试时遇到了很多问题。

例如,我建立了一个新的 Scala 项目,在其中创建了一个名为 lecture5 的包对象(位于文件中)src/main/scala/lecture5/package.scala

文件内容为:

package object lecture5 {

def last[T](xs:List[T]): T = xs match {
case List() => throw new Error("empty list")
case List(x) => x
case x :: y => last(y)
}

/* init should return all elements but last */
def init[T](xs: List[T]): List[T] = xs match {
case List() => throw new Error("List is empty")
case List(x) => List[T]()
case y :: ys => y :: init(ys)
}

def concat[T](xs: List[T], ys: List[T]): List[T] = xs match {
case List() => ys
case z:: zs => z :: concat(zs, ys)
}
}

在工作表中我有以下内容:

import lecture5._


val x = List("a","b","c")

val xs = List("a","b")
val ys = List("c")

last(x)

init(x)

concat(xs, ys) == x

在工作表的设置中,我检查了交互模式运行前创建项目并使用Run Type = REPL(Plain 由于某种原因不起作用)和编译器配置文件=默认

当我单击“play”按钮运行工作表时,函数 initlast 可以工作,但对于函数 concat 我收到错误:

Error:(13, 9) not found: value concat
concat(xs, ys) == x

为什么找不到concat

请注意,如果我在 sbt-shell 中使用 Scala 控制台并执行相同的命令,那么一切都会正常。

如何配置 IntelliJ 以毫无问题地使用工作表?

最佳答案

我在 IntelliJ 2019.1.2、Scala Plugin 2019.1.8 上复制了该问题。在运行工作表之前构建项目的任何形式都不起作用。 Invalidate Caches/Restart...后,Package对象终于成功导入。似乎无需重新启动即可对我起作用的解决方法是使用 Scala Scratch file 而不是 Scala Worksheet:

Right click project | New | Scratch file | Scala

可能与问题 SCL-12890 相关

关于scala - 在 IntelliJ 中使用 Scala 工作表很困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56206054/

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