繁体   English   中英

最终和顶级延迟初始化

[英]Final and top-level lazy initialization

请帮我理解它的确切含义:

引自“第二章飞镖语言之旅”

声明为final的本地,顶级或类变量在第一次使用时初始化

所以这是我的测试代码:

lazyTest(msg) => print(msg);

class Printer{
  Printer(msg){
    print(msg);
  }
  final finalClassVariable = lazyTest("final class variable");
}

var globalsAreLazy = lazyTest("top-level");
var lazyInitialized = lazyTest("lazy initialized");

void main() {

   final localFinal = new Printer("local final");
   var initialize = lazyInitialized;
}

输出:

最终的类变量
当地决赛
懒惰初始化

finalClassVariablelocalFinal初始化,而只有globalsAreLazy没有。 lazyInitialized在我预期的访问时初始化。

类变量是静态字段的另一个名称,因此您需要使finalClassVariable为静态,以使其finalClassVariable惰性。

局部变量的文本不正确。 它们在执行声明时初始化,而不是在第一次读取时懒惰。

调用构造函数时,初始化具有初始化表达式的非静态类字段。 他们不懒惰。

finalClassVariable是一个实例变量,而不是一个类变量。 要使它成为类变量,您必须预先添加static

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM