【笔记】Dart学习笔记

前言

Dart是一种适用于全球资讯网的开放原始码程式语言,由Google主导开发,于2011年10月公开。(维基百科

编译器

下载依赖

1
brew install dart-sdk

主函数

1
2
3
void main() {
...
}

注释

1
// 单行注释
1
/* 多行注释 */
1
/// 文档注释

输出语句

1
print("文本内容");

变量

  • 命名规则
    • 由数字、字母、_$组成
    • 不能以数字开头
    • 区分大小写
    • 不能是关键字和保留字

定义变量

1
数据类型 变量名 = 值;
  • 类型推导
1
var 变量名 = 值;

空安全

1
数据类型? 变量名 = 值;

常量

定义const修饰的常量

  • const修饰的常量在编译时就已经确定,永远不会改变
  • 通过const修饰的常量如果值相同,那么两者会共享同一块内存空间
1
const 数据类型 常量名 = 常量值;

定义final修饰的常量

  • final修饰的常量可以先声明再赋值,首次赋值后无法再次改变
  • final不仅有const的特性,而且final是惰性初始化的
1
final 数据类型 常量名 = 常量值;
1
2
final 数据类型 常量名;
常量名 = 常量值;

定义常量构造函数

  • 常量构造函数需要使用const修饰
  • 常量构造函数必须用于成员属性全部是final修饰的类
  • 如果想要共享内存空间,需要在创建对象时通过常量构造方法来创建对象
1
2
3
4
5
6
7
8
class 类名 {
final String name;
const 类名(this.name);
}

void main() {
数据类型 对象名 = const new 数据类型();
}

数据类型

类型 描述
int 整型
double 浮点型
String 字符串
bool 布尔
List 列表
Set 集合
Map 字典
Runes 符文,用来存储UTF-32编码的字符串
Symbol 用Symbols表示在Dart程序中声明的运算符或标识符
1
2
3
4
5
int a = 0;

double b = 0.0;

bool c = false;

字符串型

1
String 变量名 = '字符串';
1
String 变量名 = "字符串";

原始字符串

1
2
3
String 变量名 = '''
文本内容
''';
1
2
3
String 变量名 = """
文本内容
""";

模板字符串

1
2
3
int num = 1;

print("文本内容${num}"); // "文本内容1"
  • 省略大括号
1
2
3
int num = 1;

print("文本内容$num"); // "文本内容1"

判断数据类型

1
bool yes = 变量名 is 数据类型

获取数据类型

1
Type type = 变量名.runtimeType;

获取是否为非数值

1
bool yes = 变量名.isNaN;

数据类型转换

字符串转换为码点

1
2
3
String str = "文本内容";

Runes result = str.runes;

符文转换为字符串

1
2
3
List<int> codePoints = [68, 97, 114, 116, 32, 20013, 32, 128512];

String result = String.fromCharCodes(codePoints);

运算符

算数运算符

  • +(正号)、-(负号)
  • +(加号)、-(减号)、*/%
  • ++(自增)、--(自减)

关系运算符

  • ><>=<===!=

逻辑运算符

  • &&||!

赋值运算符

  • =+=-=*=/=%=??=

??=:如果被赋值的变量为空,那么就赋值;如果被赋值的变量不为空,那么就不赋值

按位运算符

  • &|^<<>>>>>

判空运算符

1
数据类型 变量1 = 变量2 ?? 默认值;
  • 如果变量2的值不为空,就把变量2赋值给变量1
  • 如果变量2的值为空,就把默认值赋值给变量1

分支语句

if语句

1
2
3
if (布尔表达式) {
布尔表达式成立时执行的代码;
}
1
2
3
4
5
if (布尔表达式) {
布尔表达式成立时执行的代码;
} else {
布尔表达式不成立时执行的代码;
}
1
2
3
4
5
6
7
if (布尔表达式1) {
布尔表达式1成立时执行的代码;
} else if (布尔表达式2) {
布尔表达式2成立时执行的代码;
} else {
以上布尔表达式都不成立时执行的代码;
}
1
2
3
4
5
if (布尔表达式1) {
if (布尔表达式2) {
布尔表达式12都成立时执行的代码;
}
}

switch语句

  • Dart的switch语句具有穿透行为,在每个case语句中,必须使用break跳出seitch语句
1
2
3
4
5
6
7
8
9
10
11
switch (变量) {
case1:
变量值为值1时执行的代码;
break;
case2:
变量值为值2时执行的代码;
break;
default:
变量值不为以上任何值时执行的代码;
break;
}

循环语句

while语句

1
2
3
while (循环条件) {
布尔表达式成立时反复执行的代码;
}

do…while语句

1
2
3
do {
布尔表达式成立时反复执行的代码;
} while (循环条件);

for语句

1
2
3
for (int i = 起始值; 布尔表达式; i++) {
布尔表达式成立时反复执行的代码;
}

for…in语句

1
2
3
for (var 元素 in 可迭代对象) {
...
}

break关键字

  • 跳出循环
1
2
3
while (true) {
break;
}

continue关键字

  • 结束当前循环,开始下一次循环
1
2
3
while (true) {
continue;
}

完成

参考文献

哔哩哔哩——筱筱知晓