Dart 2.7 发布,新增扩展方法支持
Dart 2.7 发布了,此版本添加了对扩展方法的支持,并带来一个用于处理带有特殊字符的字符串的新程序包。DartPad 中 null 的安全性也得到了更新。
扩展方法
Dart 2.7 添加了一个强大的语言新功能:扩展方法(extension methods)。它使你可以向任何类型(甚至是无法控制的类型)添加新功能,并具有常规方法调用的简洁性和自动完成性。
让我们看一个小例子:增加对从字符串解析整数和双精度的支持。作为应用开发人员,我们无法更改 String 类,因为它是在 dart:core 库中定义的,但是通过扩展方法,我们可以对其进行扩展。定义此扩展名后,我们可以在 String 上调用新的 parseInt 方法,就好像该方法是在 String 类本身上定义的一样:
extension ParseNumbers on String { int parseInt() { return int.parse(this); } double parseDouble() { return double.parse(this); } }main() { int i = '42'.parseInt(); print(i); }
- 扩展方法是静态的
- 扩展可以具有类型变量
- 扩展方法实际上是扩展成员
关于扩展方法的内容太多,此处不做详述,详情参见更新说明。
安全子字符串处理
Dart 的标准 String 类使用 UTF-16 编码。这是编程语言中的常见选择,尤其是那些支持在设备和 Web 上本机运行的语言。
UTF-16 字符串通常可以很好地工作。但是,在处理字符串时,尤其是在处理用户输入的字符串时,可能会遇到用户理解为字符的字符与 UTF-16 中编码为代码单元的字符之间的差异。让我们看一个小例子,提取用户输入的字符串的前三个字符:
var input = [‘Resume’]; input.forEach((s) => print(s.substring(0, 3)));$ dart main.dart Res
到目前为止没有问题;我们在输入列表中打印了字符串的前三个字符,结果为 Res。现在,我们考虑来自不同地区的用户,他们可能会输入包含重音符号,韩语(韩语脚本)甚至是表情符号组合的字符串来代表“恢复”概念:
对于 Re′sumé,为什么我们得到一个“两个字符”的字符串?对于那两个 emoji,奇怪的问号是怎么回事?这里的问题出在 Unicode。实际上,Résume 中的重音符号 e 是两个代码点:e 和组合的重音符号。
就像之前说过的,通常不需要担心字符和代码点。如果你要做的只是接收、传递并移交整个字符串,则内部编码是清晰可见的。但是,如果需要遍历字符串的字符或操纵字符串的内容,就可能会遇到麻烦。
Dart 2.7 引入了一个新的字符包,用于处理这些情况。此程序包支持将字符串视为用户感知的字符序列,也称为 Unicode 字形簇。使用字符包,可以通过对缩短文本的代码进行少量更改来修复代码:
// Before: input.forEach((s) => print(s.substring(0, 3)));// After, using the characters package: input.forEach((s) => print(s.characters.take(3)));
首先,我们从 s 中的字符串创建一个新的 Characters 实例(使用方便的 .characters 扩展方法)。然后使用 take() 方法提取前三个字符即可。
新版本还带来了 Null 安全性预览。
更多详细信息,参见:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Visual Studio 2019 for Mac 8.4 Preview 4 发布
微软已经发布了Visual Studio 2019 for Mac version 8.4 Preview 4。该版本带来了对最新稳定版 .NET Core 的支持,对 ASP.NET Core 项目的脚手架支持以及对整体产品可访问性的其他改进。用户需要下载并安装最新版本的 Visual Studio 2019 for Mac,然后在 IDE 中切换到“Preview channel”。 有关此发行版中其他更改的更多信息,请参见发行说明。 对 .NET Core 3.1 的支持始终保持最新 在此版本中,Visual Studio for Mac 添加了对新发布的.NET Core 3.1的官方支持。 更新到 Preview 4 将安装 .NET Core 3.1 SDK。如果以前没有在安装程序中选择 .NET Core target的情况下安装了 Visual Studio for Mac,则需要采取以下步骤来开始在 Visual Studio for Mac 中开发 .NET Core: 下载Visual Studio for Mac安装程序 安装 Visual Studio for...
- 下一篇
微软使用 Fluent Design 对应用图标进行统一调整,并更新 Windows 10 Logo
今天微软设计团队宣布,通过和公司产品团队的合作重新设计了 100 多款应用/服务图标。所有新图标都是遵循微软的 Fluent Design 语言来设计,代表着更强大、更统一的微软品牌。而在本次大规模图标调整中,最值得关注的就是 Windows 本身的图标调整。 ▲ 新的图标示例 上图微软提供的新图标示例中,我们也看到了重新设计的代表 Windows 10 的 Logo,可以看到图标的外形和尺寸都没有发生变化,但重点是将2015年开始使用的单色变成了渐变色,左侧小窗口的蓝色深度明显要比右侧小窗口深,从而给人更立体的感觉。 这种渐变的蓝色阴影设计可以追溯到1990年推出的 Windows 3.0 图标。 更多的新图标示例: 微软在 Medium 博文中写道:“我们将会继续推动技术的发展,并推出反应未来微软的新图标。我们的设计系统将不断发展,以解决我们尚未考虑的新场景。” 来自:cnBeta
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7