gpt4 book ai didi

static - dart const 静态字段

转载 作者:行者123 更新时间:2023-12-04 18:44:43 26 4
gpt4 key购买 nike

我在看 this answer在 SO 上,我想知道为什么这些字段被显式声明为静态和常量。常量字段是 Dart 中的编译时间常量吗?如果是这样,这不意味着它们是隐式静态的吗?

最佳答案

理论上,您可以更改 Dart 以便 const修饰符暗示 static .这是一个有效的提议,并得到了积极的讨论。
我们更喜欢要求显式 static 的原因有两个。 :

  • 它更清楚地说明了如何访问这些变量(就像任何其他静态变量一样)。
  • 我们可能想使用实例 const为了不同的意义。目前,const实例字段严格等同于 final领域。但是,它们不必如此。例如,您可以更改 Dart 规范以允许访问 const实例字段作为常量表达式的一部分。 (目前不允许访问 const 字段右侧的字段。)

  • 作为第二点的例子。说你有:
    class Point { 
    final int x;
    final int y;
    const Point(this.x, this.y);
    }
    const origin = Point(0, 0);
    目前,您将无法编写:
    const origin_x = origin.x;
    可以更改规范以允许对常量对象的字段进行持续访问,但这会阻碍 const 类的发展。
    例如,将字段更改为 getter 会突然发生重大变化。 const提案标记了这些字段,从而允许在 const 上下文中访问它们。同时,该类的作者知道更改字段(例如更改为 getter)将是一个重大更改。
    class Point { 
    const int x;
    const int y;
    const Point(this.x, this.y);
    }
    const origin = Point(0, 0);
    const origin_x = origin.x; // Now allowed.

    关于static - dart const 静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000741/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com