??= 赋值空检查运算符
如果左边为空,则进行右边的赋值运算,如果左边不等于null,则返回当前对象
String param1 = "hello";
String? param2 = null;
// param1不为空,直接返回param1
print(param1 ??= "world"); 打印hello
// param2为空,然后进行右边的赋值运算 把"world"重新赋值给了param2
print(param2 ??= "world"); //打印world
??空检查运算符(变量)
A??B 如果 A 等于 null,那么 A??B 为 B 如果 A 不等于 null,那么 A??B 为 A
String A = "A";
String? B = null;
print(A ?? B); //打印:A
print(B ?? A); //打印:A
?.空检查运算符(对象)
左边如果为空返回 null,否则返回右边的值。
String a = "a";
String? b;
print(a?.toString());//打印:a
print(b!.toString());//打印:null
!非空断言
非空断言 左边一定不能为空,才能执行右边的代码,否则会抛出异常
class AA{
void getA(){
}
}
//普通写法
var aa=AA();
if(aa!=null){
aa.getA();
}
//非空断言写法
//换成! 这样写
aa!.getA();
级联运算符 ..
class Data{
void getNum(){}
void getString(){}
void getInt(){}
void getDouble(){}
}
main(){
var data=Data()
..getInt()
..getDouble()
..getString()
..getNum();
}
...集合压缩运算符
把一整个集合添加到另外一个集合中
var list1=[1,2,3];
var list2=[4,5,6,...list1];
list2.forEach((element) {print(element);});
//打印:456123
._私有构造函数
class Instance{
Instance._();
}