Dart中的static、final、const【译】

"static", "final", "const" 在Dart中意味着完全不同的东西:

  • "static" 表示成员在类本身上可用,而不是在类的实例上。 这就是它的意思,并没有用于其他地方。 static修饰成员

  • "final" 表示单一赋值:final变量或字段必须初始化。 一旦赋值,就不能改变final变量的值。 final修饰变量

  • "const" 的含义在Dart中有点复杂和微妙。 const修饰。 您可以在创建集合时使用它,例如const [1,2,3] ,以及构造对象(代替new),比如const Point(2,3)。这里,const意味着对象的整个深度状态可以在编译时完全确定,并且对象将被冻结并完全不可变。

  • const对象有几个有趣的属性和限制:

    1. 必须根据可在编译时计算的数据创建它们。 const对象无法访问运行时需要计算的任何内容。 1 + 2是一个合法的const表达式,但new DateTime.now()不是(合法的const表达式)。
    2. 它们是深层不能改变的。 如果你有包含集合的final字段,则该集合仍然可变。 如果你有一个const集合,那么它中的所有东西也必须是递归的const。
    3. 它们是规范化的。 这有点像字符串内联:对于任何给定的const值,无论const表达式被计算多少次,都将创建并重用单个const对象。 也就是说:
    getConst() => const [1, 2]; 
    main() { 
      var a = getConst(); 
      var b = getConst(); 
      print(a === b); // true 
    } 
    
  • 我认为Dart在保持语义和关键字清晰明确方面做得非常好。 (曾经有一段时间将const用于const和final。这令人困惑。)唯一的缺点是,当你想指出一个单一赋值的成员和类本身时,你必须使用两个关键字:static final。

原文出处

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录 参考资料 语言特性 关键字 变量与常量 数据类型 运算符 operators 控制流程语句 异常 Excep...
    GuoDongW阅读 185,854评论 22 341
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,943评论 18 399
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,108评论 8 265
  • 轻语文阅读 204评论 0 0
  • 盛夏已至,光年流转之外到处都是热。 我就想,到底怎样的故事能让人过目不忘? 是你的爱? 还是世间的悲? 最怕的竟是...
    范小羊阅读 181评论 0 0

友情链接更多精彩内容