Scala懒值
Scala的懒值,是指一个变量在创建的时候,不会真的运行创建这个变量的代码,而是在第一次使用的时候,才会去运行这个创建这个变量的代码,取其值。
使用lazy 进行声明,且只能声明 val这种不可变的常量
lazy val file= scala.io.Source.fromFile("/src/test.scala")
println(file.getLines().szie)
file在执行第一段代码的时候不会运行,不会真的创建。
只有在下面打印的时候才会真的创建。
可以将懒值当成是介于val和def的中间状态:
- val在被定义时即被取值
- lazy val在首次使用时被取值
- def在每次使用时取值
懒值的意义与缺点:
- 如果变量初始化耗时,则可以用lazy加以声明,用到的时候才进行初始化
- 构造顺序问题,创建子类对象时,父类中的变量需要用到子类的变量,则需要用lazy对父类中的变量加以声明
- 缺点:每次使用前都会检查是否已经初始化,会有额外的开销