浅谈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()); // 使用`?.` 替换 `.` .
上一篇下一篇

猜你喜欢

热点阅读