内容简介:Dart 2.7 发布了,此版本添加了对扩展方法的支持,并带来一个用于处理带有特殊字符的字符串的新程序包。DartPad 中 null 的安全性也得到了更新。 扩展方法 Dart 2.7 添加了一个强大的语言新功能:扩展方法(exten...
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 安全性预览。
更多详细信息,参见:
https://medium.com/dartlang/dart-2-7-a3710ec54e97
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- fastrx 1.4.3 新增 vue 扩展
- Linux VG扩展新增硬盘并新建文件系统
- 喧喧发布 1.3.0 版本,新增扩展机制和多个实用功能
- 喧喧2.0.0版本发布,优化扩展机制,新增大量实用功能
- 图形 API 规范 Vulkan 1.1.97 发布:新增5个扩展程序
- JPress v2.0-rc.3 发布,新增文章字段扩展的支持
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Programming Python
Mark Lutz / O'Reilly Media / 2006-8-30 / USD 59.99
Already the industry standard for Python users, "Programming Python" from O'Reilly just got even better. This third edition has been updated to reflect current best practices and the abundance of chan......一起来看看 《Programming Python》 这本书的介绍吧!