• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
帅哥2255
IF YOU WANT SOMETHING THEN CHASE
博客园    首页    新随笔    联系   管理    订阅  订阅

dart特殊符号语法(一)

许久没有写博客。浏览以往的博客,是那么稚嫩。就让它们当成成长的照片吧。重新开始操起这个记录的爱好,一方面把它当成可以查阅的资料,方便自己;另一方面希望有帮助于人。由于个人能力,认知有限,如读者发现有纰缪之处,希望不吝指教。
今天分享下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 星期二(于常州)

posted @ 2024-03-05 12:02  野生骆驼  阅读(367)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3