Flutter/Dart final与const总结

Flutter/Dart final与const总结

使用final修饰的变量必须进行初始化,一旦被赋值以后,不能被再次赋值,但是这个初始化的值在编译时是不确定的,只有在运行时,才能确定其值。

例如Flutter 官方教程中,有这么一行代码:

final wordPair = WordPair.random();

const定义时,需要是个明确的值,修饰的变量它会在编译器以至于应用整个生命周期内都是不可变的常量,在内存中也只会创建一次,之后的每次调用都会复用第一次创建的对象。例如:

const city = '烟台';

var list = const[1,2,3];

var point = const Point(4,5);

const num = 1+2;

const time = DateTime.now(); //错误用法 这样会报错

const导致的不可变特性是可以传递的。如果有一个final修饰的成员变量,这个成员变量包含了一个集合,那么这个集合仍然是可变的, 但是如果包含的是const修饰的集合,那么集合内所有东西都是递归不可变的。例如:

final list0 = [1,2,3];

list0[0] = 4;print(list0.toString());//打印[4,2,3]

list1 = const[1,2,3];

list1[0] = 4;//这里会报错

扩展:static修饰符也能用来修饰变量, 被它修饰的成员变量,方法是属于类级别的, 并不属于对象。static变量直到运行期使用时才会进行实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值