Dart 中的 const 和 final

北城以北 提交于 2020-02-18 20:43:36

Dart中的const 和 final 都可以用来定义一个不可变的常量,但又有一些不一样的区别。
使用const 定义的常量是需要在编译阶段即可确定的值,而这个值一旦确定就不能再变化,否则会报错。
比如一般我们会这么用

const int age = 23; 
//会在编译阶段确定 num 的值是  50 且不可再变;
const int num = 22 + 28;	

当时如果我们使用 const 去定义一个时间戳,那就会报错

// 报错 因为在编译阶段 无法 访问运行时的内容, 而 DateTime对象只有在代码运行时方可访问的到
const int timeStamp = new DateTime.now();

再比如 我们需要生成一个随机数的场景

// import 'dart:math'; 需要引入 math 模块
// 报错,错误原因同上
const _random = new Random();

这个时候就需要使用 final 关键字来定义

final timeStamp = new DateTime.now();
final _random = new Random();
print(timeStamp);
print(_random.nextDouble());

或者还有个实际用到的项目场景,在做开发过程中,我们一般要通过网络请求获取业务数据,在编辑阶段网络请求的返回数据是完全不知道的,所以在这个时候使用const 是不行的,应该使用 final 关键字。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!