私は sbt のドキュメントを読んでいて、マルチ プロジェクト ビルドのセクションで次の例に出くわしました。
import sbt._
import Keys._
object HelloBuild extends Build {
lazy val root = Project(id = "hello",
base = file(".")) aggregate(foo, bar)
lazy val foo = Project(id = "hello-foo",
base = file("foo"))
lazy val bar = Project(id = "hello-bar",
base = file("bar"))
}
値 foo と bar が宣言される前にどのように参照できるのでしょうか? lazy キーワードと関係があると思いますが、私の読書から、lazy キーワードは初期化を遅らせるだけだと思いましたか? ここでは、初期化を気にせずに、宣言の前でも値が何らかの形で範囲内にあるようです...
うまくいけば、誰かがここで何が起こっているのか説明できます!