许久没有写博客。浏览以往的博客,是那么稚嫩。就让它们当成成长的照片吧。重新开始操起这个记录的爱好,一方面把它当成可以查阅的资料,方便自己;另一方面希望有帮助于人。由于个人能力,认知有限,如读者发现有纰缪之处,希望不吝指教。
今天分享下dart语言中的特殊符号语法使用。
?(问号)(Question mark)语法
dart3.0之后增加了?语法。
?定义变量
例子
String? variable = null;
解释
声明一个变量,这个变量可以是null。
当使用这个变量的方法时,需要先进行判定是否为null。这样来满足dart3.0的null compatible特性:
print(varialbe?.toLowerCase());
当编译器走到这里时,因看到variable是null,并且定义时就已经知道它潜在有可能是null,这是编程者设计时就已经预想到的,使用时有进行空预判(?.)所以就不再报错。
个人见解
增加了编程的可活跃范畴,是一个解放。Not bad!!!
?.引用也许是null的变量的函数、属性
例子
varialbe?.toLowerCase()
解释
再调用toLowerCase()方法前进行判定,如null则停止当前toLowerCase()的编译,但是整个编译流程会继续进行,而不把它当成是错误。这个通常和?定义一起配合使用。
个人见解
增加了编程的可活跃范畴,是一个解放。Not bad!!!
??双问号
例子
print(variable??"Other Value")
解释
假如不是空,那么使用它,假如是空,那么赋值为"Other Value"。
个人见解
通常用于取值时,短小精悍。你还能想到更简洁的处理吗?Brilliant!!!
??=双问号等号
例子
variable??="Another Value";
解释
假如不是空,那么就让它保持原样,假如是空,那么赋值为"Another Value"
个人见解
通常用于再赋值,短小精悍。你还能想到更简洁的处理吗?Brilliant!!!
...?三个点问号组合
例子
List ? arr=[2,3,7];
[...?arr,8]
解释
假如arr不是空,那么就延长数组并假如新元素8;假如arr是空,那么就不对arr进行任何操作。
个人见解
通常用于数组增加元素,短小精悍。你还能想到更简洁的处理吗?Brilliant!!!
问号?与感叹号!的区别
当我们使用问号进行判定引用变量时及时是空也可以编译通过。如果是使用感叹号判定引用,那么再值为空时会就行throw exception。要使用何种,要根据您的程序场景需求。
关于late
例子
Class _MainPageState extends State {
late String variable;
@override
void initState(){
super.initState();
variable="Value";//如果没有这个赋值,那么将会抛出异常
}
}
解释
late 是一个承诺,答应的晚些做的事情,是必须要做的。
个人见解
对于一些需要网络读取,或者文件加载等类似慢获取的变量一般很适合使用。
2024-03-05 11:17:07 星期二(于常州)