Hello World

上节课,我们讲解了创建Dart的第一个例子,下面我们来讲解自己创建一个Hello World的例子。

1 Hello World

  1. Dart 程序必须有顶层 main() 函数,程序从这里开始运行
  2. 无返回值函数写 void
  3. print() 控制台打印文字
// 程序入口
void main() {
  print('Hello, World!');
}
Code language: Dart (dart)

继续以我们上节课的创建的项目为例,打开 C:\dartdemo\firstdart\bin下的firstdart.dart

修改里面的代码为上面的代码

然后cmd到C:\dartdemo\firstdart 这个目录 执行dart run命令

C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Hello, World!Code language: CSS (css)

2 变量(var 自动推断类型)

  1. var 定义变量,Dart 会根据赋值自动识别类型,不用手动写类型名
  2. 支持字符串、数字、小数、数组、字典(对象)

例子

// 程序入口
void main() {
        var name = '旅行者一号';    // 字符串String
	var year = 1977;           // 整数int
	var width = 3.7;           // 小数double
	var planets = ['木星','土星']; // 数组List
	var info = {
	  'tag': ['土星'],
	  'url': '图片地址'
	}; // 字典Map
}
Code language: Dart (dart)

以上定义了一些,变量,变量是用来存储数据,相当于一小块内存区域,这个区域,你给它起了一个名字。有了这个名字就方便你去操作这块内存了。

这块内存理论上可以存储任何010101的数据,计算机所有数据都是01010组成。之所以有一个类型,比如字符串 整数,目的是方便去解析这些数据,比如编译器知道是int 就已整数的方式去读取。

如果你要操作上面的变量

// 程序入口
void main() {
  var name = '旅行者一号';    // 字符串 String
  var year = 1977;           // 整数 int
  var width = 3.7;           // 小数 double
  var planets = ['木星', '土星']; // 数组 List
  var info = {
    'tag': ['土星'],
    'url': '图片地址'
  }; // 字典 Map

  // 字符串使用示例
  print('探测器名称:$name');
  print('名称长度:${name.length}');
  print('是否包含“号”:${name.contains('')}');

  // 整数使用示例
  print('发射年份:$year');
  print('距今已过去:${DateTime.now().year - year} 年');

  // 小数使用示例
  print('探测器宽度:$width 米');
  print('宽度的平方:${width * width}');

  // 数组使用示例
  print('目标行星列表:$planets');
  planets.add('天王星'); // 添加元素
  print('更新后的行星列表:$planets');
  print('第一个目标:${planets[0]}');

  // 字典使用示例
  print('信息标签:${info['tag']}');
  print('图片地址:${info['url']}');
  info['status'] = '运行中'; // 添加新键值
  print('完整信息:$info');
}
Code language: PHP (php)

以上是用到格式化输出,我们还没学,读者可以先理解一下。后面会学习到这块内容。

3 流程控制语句(判断 / 循环)

if else 判断

通过if 后面的括号中的条件,来执行不同的语句,如果条件是真 true,则执行if后面的{ }中的代码,否则就执行else后面的代码

if (条件) {
  // 当条件为 true 时执行
} else {
  // 当条件为 false 时执行
}Code language: JavaScript (javascript)

例如判断是否超速了,可以这样写。

var speed = 25;

if (speed > 60) {
  print('超速了!');
} else {
  print('速度正常。');
}Code language: PHP (php)

还可以多次判断

if (speed > 100) {
  print('危险!');
} else if (speed > 60) {
  print('有点快。');
} else {
  print('安全驾驶。');
}Code language: PHP (php)
void main() {
	var year = 1977;
	if (year >= 2001) {
	  print('21世纪');
	} else if (year >= 1901) {
	  print('20世纪');
	}
}
Code language: Dart (dart)
C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
20世纪Code language: CSS (css)
for 遍历数组(for-in)

在 Dart 中,for‑in 循环是一种简洁方式,用来遍历 ListSet 或其他可迭代对象。

遍历数组或者列表中是否含有下一个元素,有就执行{}中的,没有就跳到后面,结束语句。

语法如下:

for (var item in collection) {
  // 使用 item
}Code language: JavaScript (javascript)

看例子

void main() {
	var planets = ['木星','土星'];
	for (final item in planets) {
	  print(item);
	}
}
Code language: Dart (dart)

执行结果

C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
木星
土星Code language: CSS (css)
普通数字 for 循环

从i=1 开始 一直到12 包括12 因为用了<= 每次print 后,就跑到i++这个位置

void main() {
	for (int i = 1; i <= 12; i++) {
	  print(i);
	}
}Code language: JavaScript (javascript)

执行结果

C:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
1
2
3
4
5
6
7
8
9
10
11
12Code language: CSS (css)
  1. 先执行int i = 1
  2. 然后判断条件 i <=12 是否成立
  3. 成立就掉到print (i),然后输出1
  4. 然后再到i++,i变成2,
  5. 然后再判断i<=12,因为 2<=12 是true,就继续print(i) 输出2
  6. 然后又到i++ 然后又判断i<=12
  7. …..
  8. 直到i变成了13的时候, i<=12 就不成立了。然后就直接到跳出这个for循环了,到后面

其中int i=1; 只有一开始执行一次。 后面就不在执行了,其实这个int i = 1;目的就是为了给i赋值。你完全可以写成

void main() {
    int i = 1;
	for (; i <= 12; i++) {
	  print(i);
	}
}
Code language: Dart (dart)

4. while 循环

while 循环和for循环类似,在 Dart 中,while 循环用于在条件为真时重复执行一段代码。它的语法非常简单:

while (条件) {
  // 循环体
}Code language: JavaScript (javascript)

执行逻辑:

  1. 先判断条件是否为 true
  2. 若为真,执行循环体。
  3. 执行完后再次判断条件。
  4. 当条件为 false 时,循环结束。

什么时候,条件才会为false,需要你再循环体里面 改变一些变量,是的条件会变为false,如果不改变,可能会出现一直循环下去,也就是死循环。

var year = 2010;
while(year < 2016){
  year += 1;
}
Code language: JavaScript (javascript)

可以分解为以下执行步骤 👇

初始化阶段
  • 定义变量 year,初始值为 2010
条件判断阶段
  • 判断 year < 2016 是否为真。
  • 若为真,进入循环体;若为假,跳出循环。
循环体执行阶段
  • 执行 year += 1,即 year = year + 1
  • 每次循环让 year 增加 1。
重复判断阶段
  • 再次检查条件 year < 2016
  • year 从 2010 增加到 2015 时,条件仍为真。
  • year 增加到 2016 时,条件为假,循环结束。

结束阶段

  • 循环结束后,year 的最终值为 2016

这个循环执行了 6 次(从 2010 到 2015),每次让 year 增加 1,直到条件不再成立。如果再循环体里面没有改变year的值,那么就会一直循环下去的。读者需要注意这里。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注