【发布时间】:2021-10-13 05:54:32
【问题描述】:
我正在尝试在 IntelliJ IDEA 中评估 Scala 工作表(sbt 1.5.5,jvm 采用@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,它就会正确运行。
函数定义的顺序重要吗?
【问题讨论】:
-
是的,工作表可能类似于在 scala REPL 上写东西。 REPL 无法知道将来会输入什么。
-
我想你已经回答了你自己的问题。
标签: scala intellij-idea jvm sbt