为什么在Scala中允许使用未初始化的变量?

时间:2013-01-09 14:05:59

标签: scala jvm forward-reference

  

可能重复:
  Forward References - why does this code compile?
  Scala and forward references

object Main extends App {
  val a = 4
  val b = a + c
  val c = 5
  println(b) // => 4
}

c被分配时,这将打印 4 ,因为0显然是bac是值,因此它们不应该在一个时刻0,而在下一个时间5。在Scala中,它们应该是不可变的,对吗?

我不应该至少得到某种警告吗?当然,在上面的例子中,你必须是一个想念那个的白痴,但在更复杂的情况下,很难说出它的顺序。

我当然知道我可以使用lazy val b = ...,但如果我认为我把它按正确的顺序排列,当我真的没有时。不是很危险,因为根本没有得到任何警告吗?运行得很好!?如何通过两者 Scala IDE 编译器?这是故意的吗?或者这是一个无法修复的错误? :/

:)

0 个答案:

没有答案