Dart中使用的"const"关键字是什么?

Ots*_*lal 15 dart

有人可以向我解释如何/何时/为何使用const关键字,或者它只是"声明一个常量变量的方式"?如果是这样,这有什么区别:

int x = 5;
Run Code Online (Sandbox Code Playgroud)

const int x = 5;
Run Code Online (Sandbox Code Playgroud)

你能问我一个例子吗?

Sen*_*mar 18

const表示编译时间常数.必须在编译时知道表达式值.const修改"值".

来自news.dartlang.org,

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

如果你使用

const x = 5 那么变量x可以用在像cosnt这样的集合中

const aConstCollection = const [x];
Run Code Online (Sandbox Code Playgroud)

如果你不使用const,x = 5那就用吧

const aConstCollection = const [x]; 是非法的.

更多来自www.dartlang.org的例子

class SomeClass {
  static final someConstant = 123;
  static final aConstList = const [someConstant]; //NOT allowed
}

class SomeClass {
  static const someConstant = 123; // OK
  static final startTime = new DateTime.now(); // OK too
  static const aConstList = const [someConstant]; // also OK
}
Run Code Online (Sandbox Code Playgroud)