当前位置: 首页 > wzjs >正文

app打包网站开发源码房建设计图网站

app打包网站开发源码,房建设计图网站,西安企业家名单,php mysql 网站开发近日,在 Dart 3.8 的 changelog 里正式提交了 Null-Aware Elements 语法,该语法糖可以用于在 List、Set、Map 等集合中处理可能为 null 的元素或键值对,简化显式检查 null 的场景: /之前 var listWithoutNullAwareElements [if …

近日,在 Dart 3.8 的 changelog 里正式提交了 Null-Aware Elements 语法,该语法糖可以用于在 List、Set、Map 等集合中处理可能为 null 的元素或键值对,简化显式检查 null 的场景:

/之前
var listWithoutNullAwareElements = [if (promotableNullableValue != null) promotableNullableValue,if (nullable.value != null) nullable.value!,if (nullable.value case var value?) value,
];/之后
var listWithNullAwareElements = [?promotableNullableValue,?nullable.value,?nullable.value,
];

自然,在 Flutter 的 UI 声明里,也可以简化之前控件的 if 判断,不得不说确实比起之前的写法优雅不少:

/之前
Stack(fit: StackFit.expand,children: [const AbsorbPointer(),if (widget.child != null) widget.child!,],
)/之后
Stack(fit: StackFit.expand,children: [const AbsorbPointer(),?widget.child,],
)

同时,官方在分析了大量开源 Dart 代码后(90019 个文件中的 17,941,439 行代码),发现这类需要支持的场景更多是 Map

-- Surrounding collection (1812 total) --1566 ( 86.424%): Map   ===============================================241 ( 13.300%): List  ========5 (  0.276%): Set   =

而事实上,从以下例子可以看出来,在简化 Map 上 Null-Aware Elements 的作用尤为明显:

/之前
final tag = Tag()..tags = {if (Song.title != null) 'title': Song.title,if (Song.artist != null) 'artist': Song.artist,if (Song.album != null) 'album': Song.album,if (Song.year != null) 'year': Song.year.toString(),if (comments != null)'comment': comms!.asMap().map((key, value) => MapEntry<String, Comment>(value.key, value)),if (Song.numberInAlbum != null) 'track': Song.numberInAlbum.toString(),if (Song.genre != null) 'genre': Song.genre,if (Song.albumArt != null) 'picture': {pic.key: pic},}..type = 'ID3'..version = '2.4';/之后
final tag = Tag()..tags = {'title': ?Song.title,'artist': ?Song.artist,'album': ?Song.album,'year': ?Song.year?.toString(),if (comments != null)'comment': comms!.asMap().map((key, value) => MapEntry<String, Comment>(value.key, value)),'track': ?Song.numberInAlbum?.toString(),'genre': ?Song.genre,if (Song.albumArt != null) 'picture': {pic.key: pic},}..type = 'ID3'..version = '2.4';

通过下面的简单例子,也可以看出来有了 Null-Aware Elements 之后在代码简化效果上很明显:

当然,配合其他语法也能达到去 null 的效果,比如最简单的 for 循环,通过 ?i ,就可以简单到做排除空数据的目的:

当然,你可能会觉得本来 Dart 里就有很多 ? ,比如 ?? 、 ?. 之类,加上语法之后会不会有歧义?这个问题在目前的规则上看起来还行,例如此时的 ? 前通常是 ,[{ : 等符号,这些上下文和现有 ? 用法不同 :

var list = [1, ?foo]; // ? 是空感知元素,不是其他用法
var map = {key: ?value}; // ? 是空感知值,不是可空类型

并且前面介绍过,与现有语法如 iffor 元素结合时,? 出现在 if for 头部后也不会有歧义:

var list = [for (var i in [1, 2]) ?i, // 合法:?i 是空感知元素
];
print(list); // 输出: [1, 2]

而在 Flutter 里的 UI 编排了就更加直观了:

当然,这个语法还是有一些规则限制,在这个规则下 expression 只能是一个普通表达式,不能是另一个集合,比如嵌套的 ? 或展开操作 ...

element ::=| nullAwareExpressionElement| nullAwareMapElement| // Existing productions...nullAwareExpressionElement ::= '?' expressionnullAwareMapElement ::=| '?' expression ':' '?'? expression // Null-aware key or both.|     expression ':' '?' expression  // Null-aware value.

例如下方代码就可以很直观展示这个错误使用,同时也没有 ????foo?if (c) nullableThing else otherNullableThing 这样的场景:

可以看到, Null-aware elements 语法不管是在逻辑代码还是 UI 代码都十分有用,虽然 Dart 3.8 还没正式发布,但是你可以在 Flutter beta channel 提前体验,那么,你觉这个语法符合你的审美吗?

参考链接

  • https://github.com/dart-lang/language/blob/main/accepted/future-releases/0323-null-aware-elements/feature-specification.md

文章转载自:

http://r2Avbp2N.bgpfq.cn
http://OUVNfR0G.bgpfq.cn
http://kqeYv5lf.bgpfq.cn
http://OXXim38Z.bgpfq.cn
http://Ayn7y7iT.bgpfq.cn
http://GNKFboGr.bgpfq.cn
http://ADbOtJkQ.bgpfq.cn
http://15GySoJV.bgpfq.cn
http://WVui7y96.bgpfq.cn
http://Ss9URo3W.bgpfq.cn
http://Aea9dOqC.bgpfq.cn
http://kua3stDs.bgpfq.cn
http://PJXT3WBD.bgpfq.cn
http://iJMJavZR.bgpfq.cn
http://HbKOYNeO.bgpfq.cn
http://ZgTI92Td.bgpfq.cn
http://Lo9ATutU.bgpfq.cn
http://bipDentO.bgpfq.cn
http://2njq7Poo.bgpfq.cn
http://KYsQQbti.bgpfq.cn
http://jmLQFPhM.bgpfq.cn
http://GYI6lIhb.bgpfq.cn
http://9Jb0ETA4.bgpfq.cn
http://8Ag2TDtb.bgpfq.cn
http://m4gAQ5xx.bgpfq.cn
http://liNWefC6.bgpfq.cn
http://remQrY5D.bgpfq.cn
http://dqd6HcXH.bgpfq.cn
http://yjWRpA8M.bgpfq.cn
http://V71PbdZP.bgpfq.cn
http://www.dtcms.com/wzjs/752765.html

相关文章:

  • 回收类型网站如何做淄博学校网站建设报价
  • 申办网站流程网站建设是管理费用的哪项费用
  • 黑客软件资源网站ASP个人网站的建设
  • 网站门户建设方案设计师服务平台鱼巴士
  • 属于网站建设过程规划和准备阶段的是百度做公司网站多少钱
  • 智库建设网站微信开发者工具官网下载
  • 网站制作价格上海网站权重低
  • 怎么区分网站的好坏石家庄网站推广招聘
  • 上海网站建设设计企业网站维护报价
  • 厦门工程网站建设广州哪里做公司网站号
  • 做谱的网站门户网站首页
  • 网站建设友链交换中国发达国家
  • 使用织梦系统建设网站教程上海企业信用信息公示系统(上海)
  • 夫妻性做受视频什么网站wordpress用户10亿
  • 做网站红色和什么搭配好政务网站的建设
  • 无锡网站建设哪家做得比较好建筑工程网上竣工验收入口
  • ps软件下载官方网站郑州 小程序开发
  • 建设网站的主要流程图荷兰网站后缀
  • 有没有做头像的网站网站栏目建设
  • 珠宝网站建商台北英文seo兼职
  • 网站优化是什么意思西安官网seo诊断
  • php公司网站手机网站内容规划
  • 建网站的公司哪家好做网站推广常识题库及答案
  • 东莞seo网站推广wordpress支持字体
  • 广州萝岗区网站建设昆明软件开发公司做门户网站的
  • 水文站网站建设应当坚持常德网站制作公司
  • 营销型网站试运营调忧公司网站案例展示
  • 网站服务器停止响应是什么意思网站布局设计步骤
  • 如何用c 做网站网站怎么排名
  • 企业网站小程序源码老旧小区改造国家最新政策