Dart 引入了 Null safety
Dart 团队宣布,Dart 编程语言通过其新的 null safety 功能的技术预览达到了一个新的主要里程碑。该团队表示,此功能已经开发了一年多,是自 Dart 2 以来 Dart 语言最大的新增功能。Null safety 现已可在 DartPad 版本中进行试用,并将于 2020 年底投入生产。
团队成员 Filip Hracek 和 Michael Thomsen 在帖子中写道:“Null safety 可以帮助你避免一类通常难以发现的bug,并且作为额外的奖励,可以实现一系列的性能改进。”
Dart 是一种 type-safe 语言,这意味着编译器可以保证变量的类型,但是类型安全性本身不能保证变量不为 null。Null error 在 Dart 中是常见的,并导致 Dart 代码中出现了许多问题。
Null safety 为开发人员保证他们的代码不包含 null 元素。且 Null safety 在编写代码时会提供静态错误,因此开发人员不必等到代码在运行时编译后即可发现错误。
Dart 团队设计此功能时秉承的三个核心原则为:
- 它必须在默认情况下是 non-nullable,以便开发人员可以明确声明变量何时可以为 null。
- 它必须是逐步采用的,这意味着 null-safe 代码和 non-null-safe 代码可以在同一项目中一起存在。
- 第三,它必须 fully sound。
根据该团队的说法,Dart 的 null safety 是向后兼容的,不是突破性的变化。这意味着现有代码可以调用使用 null safety 的代码,并且 null safety 将在可用时成为可选功能。
从现在开始,其会添加更多新功能来逐步完善自身,例如添加迁移工具、pub.dev 上的标签(用于显示软件包是否支持 null safety)以及对“pub outdated”命令的扩展,增加了对查找支持 null safety 的依赖版本的支持。
有关 null safety 的更多信息及其代码示例,可参见此处。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | MyBatis 源码解析:SQL 语句的执行机制
通过前面两篇文章,我们完成了对 MyBatis 所有配置文件(包括配置文件和映射文件)解析过程的分析。回忆一下我们最开始给出的小示例(如下),经过前面的跋山涉水,我们终于完成了第一行代码的 99% (手动滑稽),这最后的 1% 就是创建 SqlSessionFactory 对象。所有的配置解析最后都会封装到 Configuration 对象中,接下去就是调用 SqlSessionFactoryBuilder#build 方法创建 SqlSessionFactory 对象,实际使用的是 DefaultSqlSessionFactory 实现类进行实例化。 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder() .build(Resources.getResourceAsStream("mybatis-config.xml")); try (SqlSession sqlSession = sessionFactory.openSession()) { UserMapper mapper = sqlSession.g...
- 下一篇
Facebook
Facebook 研究人员表示,他们已经开发出了一种名为TransCoder AI的“神经编译器” ,该系统可以将代码从一种高级编程语言(如 C ++、Java 和 Python)转换为另一种。 将现有的代码库迁移到更现代或更高效的语言需要大量的资源,包括财务和人力。譬如,澳大利亚联邦银行在 5 年的时间里花费了大约 7.5 亿澳元,将其平台从 COBOL 转换为 Java。而从理论上讲,转编译器可以则帮助消除从头重写代码所需的费用。但是,由于源语言和目标语言都具有不同的语法、变量类型、标准库函数和平台API,因此这个在实践中其实很难构建。 据介绍,Facebook 的 TransCoder AI则采用了一种无监督的学习方法来应对这些挑战。它可以在无人监督的情况下不受监督地运行,从而在没有标签的情况下在数据集中找到未检测到的模式,比基于规则数据集的模型要高效得多。 无论使用哪种编程语言,神经编译器都可以将代表相同指令的代码段映射到相同代码段。一位共同作者写道:“ TransCoder 可以轻松地推广到任何编程语言,不需要任何专业知识就可以将代码从一种编程语言转换为另一种编程语言,并且在...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Mario游戏-低调大师作品
- 2048小游戏-低调大师作品
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- 设置Eclipse缩进为4个空格,增强代码规范
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker快速安装Oracle11G,搭建oracle11g学习环境