final和const都是用于定义常量的, 也就是定义之后值都不可以修改。
下面的代码在空安全下是有错误的,因为 int 类型的变量不能为 null。
可以通过在类型后添加 ?
来表示该类型可空。
int? a = null;
null 在未初始化的变量里都是默认值,以上代码可以简写为:
int? a;
??=
仅当该变量为空值时才为其赋值:
int? a; // = null
a ??= 3;
print(a); // <-- 打印 3
当a不为空是,无法赋值
a ??= 5;
print(a); // <-- 仍然打印 3.
??
如果该运算符左边的表达式返回的是空值,则会计算并返回右边的表达式。
print(1 ?? 3); // <-- 打印 1
print(null ?? 12); // <-- 打印 12