Dart 常量和常量值

finalconst 两个关键字用来定义常量,有什么区别呢?

  1. final 声明的是运行时常量,const声明的是编译时常量

  2. const 可以声明常量值

举个例子:

import 'dart:math';
void main() {
  var random = Random();
  final randomNumber = random.nextInt(10);
}

如上所示 random.nextInt(10)就是一个运行时常量,因为随机数只有在程序运行的时候才会产生。

那么编译时常量呢,下面就是编译时常量,可以说区别很明显了。

void main() {
    const double PI = 3.14;
    const MAX_AGE = 255;
    const END_MESSAGE = "GAME OVER";
}

什么是常量值?

List students = const <String>["李白"];

const <String>["李白"]就是一个常量值,但是students是一个变量,所以students是可变的,举个鲜明的例子。

  List students = const <String>["李华"];
  students[0] = "李华111"; 
  // Error: Uncaught Error: Unsupported operation: indexed set
  List students = const <String>["李华"];
  students =const <String> ['杜甫','李白'];
   print(students); // [杜甫, 李白]

所以这就是dart中的常量和常量值了