Dart 语法全解析:从基础到进阶
Dart 是由 Google 开发的一种现代化编程语言,常用于构建跨平台应用,尤其是 Flutter 框架的核心语言。Dart 结合了静态类型和动态特性,以简洁、灵活、高效的语法深受开发者青睐。本文将从 Dart 语法的基本组成到高级特性逐步解析,帮助初学者全面掌握 Dart 的语法体系。
1. 什么是 Dart?
Dart 是一种面向对象的编程语言,具有以下核心特点:
- 跨平台支持:支持 Web、移动端和桌面端开发。
- JIT 和 AOT 编译:即时编译(JIT)适合开发阶段,提前编译(AOT)适合生产环境。
- 与 Flutter 深度集成:构建高性能跨平台应用的首选语言。
2. Dart 语法基础
2.1 变量与数据类型
Dart 是强类型语言,但支持类型推断。可以显式声明类型或使用 var
、final
和 const
。
void main() {
int age = 30; // 整型变量
double height = 1.75; // 浮点型
String name = 'Dart'; // 字符串
bool isAwesome = true; // 布尔值
var inferredType = 'Hello'; // 自动推断为 String
final createdDate = DateTime.now(); // 运行时常量
const pi = 3.14159; // 编译时常量
}
2.2 基本运算符
Dart 提供丰富的运算符,包括算术、关系、逻辑和赋值运算符。
- 算术运算符:
+
,-
,*
,/
,%
- 逻辑运算符:
&&
,||
,!
- 关系运算符:
==
,!=
,>
,<
,>=
,<=
void main() {
int a = 10;
int b = 3;
print(a + b); // 输出 13
print(a / b); // 输出 3.3333333333333335
print(a % b); // 输出 1
}
2.3 条件语句
Dart 支持 if
、else if
和 else
结构,以及三元运算符。
void main() {
int score = 85;
if (score >= 90) {
print('优秀');
} else if (score >= 60) {
print('及格');
} else {
print('不及格');
}
// 三元运算符
String result = score >= 60 ? '通过' : '未通过';
print(result);
}
3. 函数与方法
3.1 定义函数
函数是 Dart 编程的核心,支持位置参数、命名参数和可选参数。
// 普通函数
int add(int a, int b) {
return a + b;
}
// 命名参数,带默认值
void greet({String name = '用户'}) {
print('你好, $name!');
}
// 可选参数
void printInfo(String name, [int? age]) {
print('名字: $name, 年龄: ${age ?? '未知'}');
}
void main() {
print(add(3, 5)); // 输出 8
greet(name: 'Dart'); // 输出 你好, Dart!
printInfo('Alice', 25); // 输出 名字: Alice, 年龄: 25
}
3.2 Lambda 表达式
Dart 支持简化函数定义的箭头语法。
int square(int x) => x * x;
void main() {
print(square(4)); // 输出 16
}
4. 集合类型
4.1 列表(List)
列表是 Dart 中的动态数组,支持多种操作。
void main() {
var numbers = [1, 2, 3];
numbers.add(4);
print(numbers); // 输出 [1, 2, 3, 4]
print(numbers.length); // 输出 4
print(numbers[2]); // 输出 3
}
4.2 映射(Map)
映射存储键值对。
void main() {
var user = {'name': 'Alice', 'age': 30};
print(user['name']); // 输出 Alice
user['location'] = 'Earth';
print(user); // 输出 {name: Alice, age: 30, location: Earth}
}
4.3 集合(Set)
集合存储唯一值。
void main() {
var uniqueNumbers = {1, 2, 3, 3};
print(uniqueNumbers); // 输出 {1, 2, 3}
}
5. 面向对象编程(OOP)
5.1 类与对象
Dart 是彻底的面向对象语言,所有内容都是对象。
class Person {
String name;
int age;
Person(this.name, this.age);
void greet() {
print('你好, 我是$name, 今年$age岁');
}
}
void main() {
var person = Person('Alice', 25);
person.greet(); // 输出 你好, 我是Alice, 今年25岁
}
5.2 继承
Dart 支持单继承。
class Animal {
void eat() {
print('动物正在吃东西');
}
}
class Dog extends Animal {
void bark() {
print('狗在叫');
}
}
void main() {
var dog = Dog();
dog.eat(); // 输出 动物正在吃东西
dog.bark(); // 输出 狗在叫
}
6. 异步编程
Dart 的异步特性通过 Future
和 async
/await
实现。
Future<String> fetchData() async {
return Future.delayed(Duration(seconds: 2), () => '数据已加载');
}
void main() async {
print('开始加载');
var data = await fetchData();
print(data); // 输出 数据已加载
}
7. 异常处理
Dart 使用 try
、catch
和 finally
捕获异常。
void main() {
try {
int result = 100 ~/ 0;
print(result);
} catch (e) {
print('发生错误: $e');
} finally {
print('执行完成');
}
}
8. Dart 的独特特性
8.1 Null Safety(空安全)
Dart 引入了空安全机制,避免因 null
引发的错误。
void main() {
String? name;
print(name?.length ?? '未知长度'); // 输出 未知长度
}
8.2 扩展方法
扩展方法允许为现有类添加新功能。
extension StringExtension on String {
String greet() => '你好, $this!';
}
void main() {
print('Dart'.greet()); // 输出 你好, Dart!
}
9. 应用场景与总结
Dart 凭借其简洁的语法、高效的编译机制和强大的生态系统,广泛应用于移动应用开发(Flutter)、Web 开发和命令行工具开发。掌握 Dart 语法,为进入 Flutter 开发世界打下坚实的基础。