kor*_*dge 10 jvm scala forward-reference
可能重复:
转发引用 - 为什么这段代码会编译?
Scala和前向引用
object Main extends App {
val a = 4
val b = a + c
val c = 5
println(b) // => 4
}
Run Code Online (Sandbox Code Playgroud)
这将打印4作为c显然是0当b被分配.a并且c是价值观,因此它们不应该0在一个时刻,而5在下一个时刻.在Scala中,它们应该是不可变的,对吧?
我不应该至少得到某种警告吗?当然,在上面的例子中,你必须是一个想念它的白痴,但在更复杂的情况下,很难说出它的顺序.
我当然知道我可以使用,lazy val b = ...但如果我认为我把它按正确的顺序排列,当我真的没有时.不是很危险,因为根本没有得到任何警告吗?运行得很好!?这是如何获得通过两者的Scala IDE 和编译器?这是故意的吗?或者这是一个无法修复的错误?:/
:)