IntelliJ IDEA 的 Scala 工作表中函数定义的顺序重要吗?

does order of function definitions in IntelliJ IDEA's scala worksheet matter?

我正在尝试在 IntelliJ IDEA 中评估 Scala 工作表(sbt 1.5.5、jvm adopt@1.11.0-11、Scala 3.0.1)。 worksheet.sc,如果定义如下

def abs(x:Double) = if (x < 0) -x else x

def sqrtIter(guess: Double, x: Double): Double =
  if (isGoodEnough(guess, x)) guess
  else sqrtIter(improve(guess, x), x)

def isGoodEnough(guess: Double, x: Double) =
  abs(guess * guess - x ) / x < 0.001

def improve(guess: Double, x: Double) =(guess + x / guess) / 2

在评估时确实会抛出一些错误:Not found: isGoodEnoughNot found: improve
但是,如果我将这两个函数的定义 移到 sqrtIter 上方,它会正确运行。

函数定义的顺序重要吗?

是的,使用 运行 类型为 REPL 的 Scala 工作表时顺序很重要。

来自以下评论:
显示工作表设置(单击左上角的扳手图标)。将 运行 type 从 REPL 更改为 Plain。您的代码将按发布的方式编译(无需重新排序)。