私の Test.scala では、最初に数値をインクリメントするための Trait と Object を定義しました。Scala での関数型プログラミングの「乱数ジェネレーター」のレッスンに基づいて、RNG コードの一部を使用していることに注意してください。
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
この回答は役に立ちましたが、上記のコードにどのように適用されるかわかりません。