语法糖 ?. 与 ??
dart 语法糖 ?.
它的意思是左边如果为空返回 null,否则返回右边的值。
A?.B
如果 A 等于 null,那么 A?.B 为 null
如果 A 不等于 null,那么 A?.B 等价于 A.B
void main() {
Animal animal = new Animal('cat');
Animal empty = null;
//animal 非空,返回 animal.name 的值 cat
print(animal?.name);
//empty 为空,返回 null
print(empty?.name);
//animal 非空,可以直接访问 animal.name 的值 cat
print(animal.name);
//empty 为空,抛出异常
print(empty.name);
}
class Animal {
final String name;
Animal(this.name);
}
运行后会看到如下输出:
cat
null
cat
Uncaught exception:
Cannot read property 'get$name' of null
dart 语法糖 ??
它的意思是左边如果为空返回右边的值,否则不处理。
A??B
如果 A 等于 null,那么 A??B 为 B
如果 A 不等于 null,那么 A??B 为 A
以上面为例子,假设我们上面要求当 empty 为空时,默认值输出 unknown。
那么可以修改如下:
//empty 为空,返回 null
print(empty?.name);
改为:
//empty 为空,本来要返回 null,由于有 ??,返回 unknown
print(empty?.name??'unknown')
b ??= 'hello';
如果b为null的情况下,b等于hello。如果不为null则不作任何操作
网友评论