在我的 Test.scala 中,我定义了一个 Trait 和 Object 用于首先增加一个数字。请注意,我使用的部分 RNG 代码基于Scala 函数式编程中的“随机数生成器”课程。
trait NumberInc {
def currentInt: Int
def nextInt: (Int, NumberInc)
}
object NumberInc {
def simple(seed: Int): NumberInc = new NumberInc {
def currentInt: Int = seed
def nextInt: (Int, NumberInc) = (seed + 1, simple(seed + 1))
}
}
然后,在我的“Test”对象的 foo() 方法中,我执行以下逻辑:
def foo() {
var numberInc = NumberInc.simple(0)
def bar() = {
baz(numberInc.currentInt)
var (_, numberInc) = numberInc.nextInt /* Error Line */
}
}
但是我在上面的错误行中遇到了这个错误。
[error] forward reference extends over definition of variable numberInc
我发现这个答案很有帮助,但我不确定它如何应用于我的上述代码。