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: isGoodEnough
和 Not found: improve
。
但是,如果我将这两个函数的定义 移到 sqrtIter
上方,它会正确运行。
函数定义的顺序重要吗?
是的,使用 运行 类型为 REPL 的 Scala 工作表时顺序很重要。
来自以下评论:
显示工作表设置(单击左上角的扳手图标)。将 运行 type 从 REPL 更改为 Plain。您的代码将按发布的方式编译(无需重新排序)。
我正在尝试在 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: isGoodEnough
和 Not found: improve
。
但是,如果我将这两个函数的定义 移到 sqrtIter
上方,它会正确运行。
函数定义的顺序重要吗?
是的,使用 运行 类型为 REPL 的 Scala 工作表时顺序很重要。
来自以下评论:
显示工作表设置(单击左上角的扳手图标)。将 运行 type 从 REPL 更改为 Plain。您的代码将按发布的方式编译(无需重新排序)。