Dart 2.12 发布
Dart 2.12 已于昨日发布,此版本带来了稳定的空类型安全声明 (sound null safety) 和 Dart FFI。空类型安全声明可帮助开发者避免 null 错误——这类错误往往很难被发现。FFI (Foreign Function Interface) 是一种互操作性机制,开发者可通过它调用使用 C 语言编写的现成代码,例如调用 Windows Win32 API。
空类型安全声明 (sound null safety)
空类型安全声明 (sound null safety) 是自 Dart 2.0 引入声明类型系统 (sound type system) 以来,对 Dart 语言最大的补充。空类型安全 (null safety) 进一步增强了类型系统,让开发者在开发阶段即可捕获 null 错误,从而防止在生产环境出现崩溃,毕竟 null 错误是导致应用崩溃的常见原因。
Dart 的空类型安全支持基于三条核心原则:
默认情况下不可为空
逐步采用空类型安全声明
完全空类型安全声明
Dart FFI,用于将 C 类库与 Dart 集成
Dart FFI 让开发者能够利用 C 类库中现成的代码,以实现更好的可移植性,并且通过与高度调整的 C 语言代码集成以执行对性能要求较高的任务。从 Dart 2.12 开始,Dart FFI 已经脱离 beta 阶段,并被认为是稳定功能,可用于生产环境。此外还新增了嵌套结构和按值传递结构。
嵌套结构
C API 通常使用嵌套结构——即本身包含结构体的结构,例如以下示例:
struct Wheel {
int spokes;
};
struct Bike {
struct Wheel front;
struct Wheel rear;
int buildYear;
};
从 Dart 2.12 开始,FFI 也已支持嵌套结构。
按值传递结构
开发者可以在 C 语言代码中按引用和按值传递结构。FFI 以前仅支持按引用传递,但从 Dart 2.12 开始,开发者可以按值传递结构。这是两个同时通过引用传递和值传递的 C 函数的示例:
struct Link {
double value;
Link* next;
};
void MoveByReference(Link* link) {
link->value = link->value + 10.0;
}
Coord MoveByValue(Link link) {
link.value = link.value + 10.0;
return link;
}
发布公告还详细介绍了 FFI 的其他内容,详情查看:https://medium.com/dartlang/announcing-dart-2-12-499a6e689c87
往期推荐
2021-03-04
2021-03-04
2021-03-04
扫码关注最新动态
公众号ID:fosslab
我就知道你“在看”