浅谈dart 运算符常见语法糖(空安全)
2021-03-15 本文已影响0人
小话001
?
的使用
bool isWeber(a,b){
// 如果userName里面有age 这个字段那就执行后面的contain操作,判断里面有没有vue
bool age=useName[age]?.contains(vue) ??false;
bool name=useName[name]?.contains(angular) ??false;
return age||name
}
如果useName为null或userName[age]为null,或contains(vue)为null,那么整个表达式都是null
?.
运算符在左边为null的情况下会阻断右边的调用
??=
的使用
var name1="张三";
name1??="李四"
print(name1);//张三
var name2="";
name2??="李四"
print(name2);//空值 即无结果
var name3=null;
name3??="李四"
print(name3);//李四
??=
运算符主要作用是在左侧表达式为null(注意:是null,而不是空哈)的情况时为其赋值。
??
的使用
var name="张三";
var temp=name??"李四"
print(temp);//张三
var name1=null;
var temp1=name1??"李四";
// 相当于是三目运算的简写 name==null?"李四":name
print(temp1);//李四
??:
??前面的数据有值那就使用??前面的数据,如果它前面的数据为null,那么就使用后面的数据
..
的使用
main(){
var p=Person()
..name="张三"
..eat()
..run()
}
class Person(){
String name;
void run(){
print('running');
}
void eat(){
print('eating');
}
}
..
作为级联运算符的基本操作
// 本来括号是 index,但是用不上,可以用_ 代替
Flex(
direction:Axis.horizontal,
children:List.generate(100,(_)){
return Text('xxx');
}
)
总结:
操作符 ?
:放在类型后面表示当前变量可为null,例如 String a 和 String ? b ,a 不能为null,而 b 可以。
操作符 !
:表示此变量值不为null,如果为null则会抛出异常。使用请慎重考虑。
操作符 ?.
是.
的升级版:表示不为null情况下的引用,例如:
String ?a;
print(a?.length()); // 使用`?.` 替换 `.` .