Dart 语法核心亮点总结
Dart 的特别之处
Dart 是一种现代、强大的语言,专为在任何平台上构建快速应用程序而设计。以下是其核心亮点:
1. 健全的空安全
Dart 的空安全在编译时防止空引用错误:
dart
String name = 'Alice'; // 非空
String? maybeName; // 可空
// 编译时错误预防
// name = null; // 错误!
maybeName = null; // 可以优势:
- 更少的运行时错误
- 更好的性能
- 更清晰的代码意图
2. 强类型系统与类型推断
Dart 结合了静态类型和类型推断:
dart
var name = 'Alice'; // 推断为 String
var age = 25; // 推断为 int
// 保持类型安全
// name = 123; // 错误!3. 一切皆对象
Dart 中的一切都是对象,包括数字和函数:
dart
int number = 42;
print(number.isEven); // true
var multiply = (int a, int b) => a * b;
print(multiply(3, 4)); // 124. 出色的异步支持
内置的 async/await 使异步代码易读:
dart
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 1));
return '数据已加载';
}
void main() async {
var data = await fetchData();
print(data);
}5. 强大的集合
丰富的集合类型和函数式操作:
dart
var numbers = [1, 2, 3, 4, 5];
var doubled = numbers.map((n) => n * 2);
var evens = numbers.where((n) => n % 2 == 0);
var sum = numbers.reduce((a, b) => a + b);6. Mixin 实现代码复用
Mixin 允许在不使用传统继承的情况下复用代码:
dart
mixin Flyable {
void fly() => print('飞行中!');
}
class Bird with Flyable {}
void main() {
Bird().fly(); // 飞行中!
}7. 扩展方法
为现有类添加功能:
dart
extension StringExtension on String {
String get reversed => split('').reversed.join();
}
void main() {
print('hello'.reversed); // olleh
}8. 模式匹配(Dart 3.0+)
现代模式匹配使代码更清晰:
dart
String describe(Object obj) {
return switch (obj) {
int n when n > 0 => '正数',
String s => '字符串:$s',
List l => '包含 ${l.length} 项的列表',
_ => '其他',
};
}9. 记录(Dart 3.0+)
轻松返回多个值:
dart
(String, int) getUserInfo() {
return ('Alice', 25);
}
void main() {
var (name, age) = getUserInfo();
print('$name 今年 $age 岁');
}10. 热重载
开发期间即时更新代码:
- 毫秒级查看更改
- 保持应用状态
- 提升生产力
关键语言特性
变量与类型
var、final、const- 使用
?的空安全 - 类型推断
函数
- 一等函数
- 箭头语法
- 命名和可选参数
- 高阶函数
面向对象
- 类与构造函数
- 继承与 mixin
- 抽象类与接口
- 操作符重载
异步
- 单个异步值的
Future - 序列的
Stream async/await语法- 使用 try-catch 处理错误
集合
- List、Set、Map
- 集合 if/for
- 展开运算符
- 丰富的 API(map、where、reduce)
为什么选择 Dart?
用于 Flutter 开发
- Flutter 必需
- 最佳性能
- 热重载
- 所有平台的单一代码库
用于通用开发
- 现代语言特性
- 强大的工具链
- 出色的性能
- 易于学习
性能
- 生产环境的 AOT 编译
- 开发环境的 JIT 编译
- 快速启动时间
- 高效的内存使用
开发者体验
- 清晰的错误消息
- 出色的 IDE 支持
- 丰富的标准库
- 活跃的社区
Dart 与其他语言对比
vs JavaScript
- ✅ 静态类型
- ✅ 空安全
- ✅ 更好的工具链
- ✅ 更快的执行速度
vs Java
- ✅ 现代语法
- ✅ 空安全
- ✅ 更简单的泛型
- ✅ 更好的异步支持
vs Kotlin
- ✅ 跨平台(Flutter)
- ✅ 更简单的语法
- ✅ 更适合 UI
- ≈ 类似的现代特性
vs Swift
- ✅ 跨平台
- ✅ 更简单的语法
- ≈ 类似的性能
- ≈ 类似的现代特性
Dart 生态系统
核心工具
- Dart SDK:编译器、VM、库
- pub.dev:包仓库
- DartPad:在线游乐场
- Dart DevTools:调试和分析
流行包
- http:HTTP 客户端
- dio:高级 HTTP 客户端
- json_serializable:JSON 处理
- riverpod:状态管理
- freezed:不可变类
框架
- Flutter:UI 框架
- AngularDart:Web 框架
- Shelf:服务器框架
- Aqueduct:REST API 框架
学习路径
基础(1-2 周)
- 变量、类型、函数
- 控制流
- 集合
中级(2-3 周)
- 面向对象概念
- 空安全
- 异步编程
高级(3-4 周)
- 泛型
- Mixin
- 扩展方法
- Isolate
Flutter(持续)
- Widget
- 状态管理
- 导航
- 平台集成
最后的想法
Dart 是一种现代、高效且强大的语言,擅长于:
- ✅ 使用 Flutter 构建精美的 UI
- ✅ 编写清晰、可维护的代码
- ✅ 防止常见错误
- ✅ 提供高性能
- ✅ 支持快速开发
无论你是构建移动应用、Web 应用还是服务器端服务,Dart 都提供了成功所需的工具和特性。
今天就开始使用 Dart 构建吧! 🚀