scala-val lazy def初始化

object Main extends App {

  val v = {
    println("in val")
  }
  lazy val l = {
        println("in lazy")    //每次访问时,都会有一个方法以线程安全的方式检查该值是否已被初始化
                              //(l,l)和(f,f)哪个开销更大?
  }
  def f = {
    println("in def")
  }
  
  (v,v)    //in val被输出一次,不管有没有这里的调用
  (l,l)    //in lazy被输出一次,如果没有这里,in lazy不会被调用
  (f,f)    //in def被输出两次,因为给元组各元素赋值时都分别调用了f
}



你可能感兴趣的:(scala-val lazy def初始化)