Dart 中的 const 和 final

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 关键字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值