Dart 基础
最后修改日期:2024 年 1 月 28 日
在本文中,我们将介绍 Dart 语言的基本编程概念。
Dart 是一种面向客户端的语言,可用于在任何平台上快速构建应用程序。它用于构建移动、桌面、服务器和 Web 应用程序。
Dart 简单示例
下面是一个简单的 Dart 示例。
void main() {
print('First program in Dart');
}
该程序将一条消息打印到控制台。Dart 程序具有 main.dart 扩展名。main 函数是程序的入口点。函数的正文包含在一对花括号中。print 函数在控制台显示一条消息。语句以分号结尾。
$ dart main.dart First program in Dart
我们运行该程序。
Dart 注释
注释用于人类来澄清源代码。Dart 中有三种类型的注释:单行注释 (//)、多行注释 (/* */) 和文档注释 (///)。
文档注释由 dartdoc 用于生成文档。IDE 也使用它们。
/*
This is main.dart
Author: Jan Bodnar
ZetCode 2023
*/
// Program starts here
void main() {
print("This is a Dart program");
}
在示例中,我们有一个多行注释和一个单行注释。编译器会忽略注释。
Dart 变量
变量存储对值的引用。每个值都是一个对象——一个类的实例。
void main() {
String name = 'John Doe';
int age = 34;
double height = 172.5;
print('$name is $age years old; his height is $height cm');
}
在示例中,我们有三个变量:一个字符串、一个整数和一个双精度浮点数变量。变量的数据类型使用 String、int 和 double 显式指定。
String name = 'John Doe';
我们可以使用单引号和双引号创建字符串字面量。
print('$name is $age years old; his height is $height cm');
Dart 支持字符串中的变量插值。以 $ 字符开头的变量在字符串中将被求值为它们的值。
$ dart main.dart John Doe is 34 years old; his height is 172.5
Dart var 关键字
当我们使用 var 关键字时,编译器会从赋值的右侧推断变量的数据类型。
void main() {
var name = 'John Doe';
var age = 34;
var height = 172.5;
print('$name is $age years old; his height is $height cm');
print(name.runtimeType);
print(age.runtimeType);
print(height.runtimeType);
}
这三个变量的数据类型由编译器推断。
print(name.runtimeType); print(age.runtimeType); print(height.runtimeType);
我们可以使用 runtimeType 属性来获取变量的数据类型。
$ dart main.dart John Doe is 34 years old; his height is 172.5 cm String int double
Dart dynamic 关键字
使用 dynamic 关键字,我们可以声明一个动态类型的变量。我们可以将不同数据类型的值赋给同一个变量。
void main() {
dynamic n = 3;
print(3);
n = 'three';
print(n);
}
在示例中,我们首先将值 3 赋给 n 变量;之后,我们将字符串值“three”赋给它。
$ dart main.dart 3 three
Dart 用户输入
dart:io 库为非 Web 应用程序提供了文件、套接字、HTTP 和其他 I/O 支持。
import 'dart:io';
void main() {
stdout.write("Enter your name: ");
var name = stdin.readLineSync();
print('Hello $name\n');
}
该示例提示用户输入姓名并打印一条消息。
stdout.write("Enter your name: ");
我们可以使用 stdout.write 函数将内容写入控制台而不换行。
var name = stdin.readLineSync();
我们使用 stdin.readLineSync 读取用户输入。
$ dart main.dart Enter your name: Peter Hello Peter
Dart 条件语句
条件语句使用 if、else if 和 else 关键字创建。
import 'dart:io';
void main() {
stdout.write("Enter a number: ");
var input = stdin.readLineSync();
var n = int.parse(input);
if (n > 0) {
print('$n is a positive value');
} else if (n == 0) {
print('$n is zero');
} else {
print('$n is a negative value');
}
}
在示例中,我们要求用户输入一个数字。根据接收到的值,我们将一条消息打印到控制台。
var n = int.parse(input);
由于 readLineSync 返回一个字符串,我们使用 int.parse 将字符串转换为数字。
if (n > 0) {
print('$n is a positive value');
} else if (n == 0) {
print('$n is zero');
} else {
print('$n is a negative value');
}
在 if 关键字之后,我们将条件放在两个圆括号之间。如果条件为真,则执行 if 语句的正文。其他分支将被跳过。如果条件为假,编译器将测试 else if 语句之后的条件。如果为真,则执行随后的正文。如果两个条件都失败,则执行 else 语句之后的正文。
$ dart main.dart Enter a number: 4 4 is a positive value $ dart main.dart Enter a number: -4 -4 is a negative value $ dart main.dart Enter a number: 0 0 is zero
Dart 异常
异常是指示发生了意外情况的错误。异常使用 try、on 和 catch 关键字进行处理。
import 'dart:io';
void main() {
stdout.write("Enter a number: ");
var input = stdin.readLineSync();
int n;
try {
n = int.parse(input);
} on FormatException {
print('wrong value');
return 1;
}
if (n > 0) {
print('$n is a positive value');
} else if (n == 0) {
print('$n is zero');
} else {
print('$n is a negative value');
}
}
在示例中,我们处理用户未输入有效数字值的情况。
try {
n = int.parse(input);
} on FormatException {
print('wrong value');
return 1;
}
易出错的代码放在 try 语句的正文中。当字符串或其他数据格式不正确且无法解析或处理时,会引发 FormatException。
$ dart main.dart Enter a number: 4 4 is a positive value $ dart main.dart Enter a number: f wrong value
Dart while 循环
while 语句是一种控制流语句,它允许根据给定的布尔条件重复执行代码。while 关键字执行由花括号括起来的代码块内的语句。每次表达式求值为 true 时都会执行这些语句。
void main() {
int i = 0;
int sum = 0;
while (i <= 10) {
sum += i;
i++;
}
print(sum);
}
在代码示例中,我们计算某个数字范围内值的总和。
while 循环有三个部分。初始化、测试和更新。语句的每次执行都称为一个周期。
int i = 0;
我们初始化 i 变量。它用作计数器。
while (i <= 10) {
...
}
while 关键字后面的圆括号内的表达式是第二阶段,即测试。主体中的语句将一直执行,直到表达式的计算结果为假。
sum += i;
我们将 i 的当前值加到 sum 变量中。
i++;
这是 while 循环的最后、第三个阶段,即更新。我们递增计数器。请注意,对 while 循环的处理不当可能导致无限循环。
$ dart main.dart 55
Dart for 循环
我们可以使用 for 语句进行循环。Dart 中有两种 for 循环:经典的 for 循环和 for-in 循环。
void main() {
var sum = 0;
for (var i = 0; i < 10; i++) {
sum += i;
}
print(sum);
var vals = [1, 2, 3, 4, 5];
for (var e in vals) {
print(e * e);
}
}
在示例中,我们同时使用了这两种 for 循环。
var sum = 0;
for (var i = 0; i < 10; i++) {
sum += i;
}
我们使用经典的 for 循环计算 1..10 的值之和。有三个阶段。在第一个阶段,我们将计数器 i 初始化为零。此阶段仅执行一次。接下来是条件。如果满足条件,则执行 for 块内的语句。在第三个阶段,计数器增加。然后我们重复第 2、3 个阶段,直到条件不再满足,然后退出 for 循环。在我们的例子中,当计数器 i 等于 10 时,for 循环停止执行。
var vals = [1, 2, 3, 4, 5];
for (var e in vals) {
print(e * e);
}
在第二种形式中,我们逐个遍历列表的元素。我们对列表的所有值进行平方。
$ dart main.dart 45 1 4 9 16 25
Dart 命令行参数
Dart 程序可以接收命令行参数。当我们在运行时,它们会跟在程序名称后面。
void main(List<String> args) {
for (var val in args) {
print(val);
}
print('---------');
for (int i = 0; i < args.length; i++) {
print(args[i]);
}
}
我们在 args 列表中接收参数。我们使用经典的 for 循环和 for-in 循环遍历这些参数。
$ dart main.dart 1 2 3 4 1 2 3 4 --------- 1 2 3 4
来源
以上是对 Dart 编程语言的介绍。
作者
列出 所有 Dart 教程。