Dart学习笔记(二)

1. 运算符

Dart中的运算符使用与现代的大多编程语言大都类似

1.1. 关系运算符

image-20220414230828424

关系运算符的用法与其他编程语言中的基本没有多少区别,主要注意一下相等

1
2
3
4
5
6
7
8
// 比较运算符
var num1 = 123;
var num2 = '123';
if (num1 == num2) {
print(true);
} else {
print(false);
}

这里相等的当然是内容,如果需要判断两者为同一对象,使用identical()

1.2. 算术运算符

image-20220414231128986

以上为一些常用运算符,可能特殊一点是

~/(取整) %(取余)

1
2
3
var num5 = 4;
var num6 = 3;
print(num5 ~/ num6);

这样的结果只会取到整数部分的1

1
2
3
var num5 = 4;
var num6 = 3;
print(num5 % num6);

换成%取得就是余数1

并且需要注意,这里的/操作,返回的是double,与传统的c-like语言有点不同

image-20220414232234291

++--前后皆可,没什么特别

1.3. 类型判断

主要用于在代码运行时对于字段的类型进行检查

is用于判断变量是否属于某个类型

1
2
var a = 12;
print(a is int); // true

is!这个符号很奇葩,!一定注意是在后面😂

意思与is相反

1
2
var a = 12;
print(a is! int); // false

as代表一种强转,他需要目标类型从属于原类型

1
2
Object a = 123;
print(a as int);

一切都是Object,那么自然可以取出int,当然,既然是强转,不匹配是会抛异常的

1.4. 赋值运算符

其他都很到理解,与其他语言没什么两样,比较特殊的应该就是为空赋值

??=表示为空赋值

1
2
3
4
var b = null;
// 可能有其他处理
b ??= '--';
print(b); // --

这种使用场景可能在接口返回时使用,主要作为缺省值,后端返回为null,显示缺省,否则就显示对应字段

1.5. 条件表达式

三元运算符和其他语言的差不多,但是需要注意??

1
2
3
var a = null;
var b = a ?? 5;
print(b);

??=相似,那个是处理左值可能为空的情况,这个是右值,主要还是用于保证非空类型不会为空

1.6. 基础的类型转换

经常会用到的可能就是StringNumber之间的转化了

1
2
3
// toString()
var d = 23.36;
var str = d.toString();

数值类型转化为String直接可以调用toString方法,相当于给原来的数值外面加上括号

1
2
3
4
5
6
7
// parse()
String s = '123';
// 异常添加try...catch
var num3 = int.parse(s);
if (num3 is int) {
print(num3);
}

String转为数值类型,可以通过对应数值类型的parse()方法,但是,由于不是所有String都能是Number,所以可能会发生异常,实际应用中需要加上try...catch,防止程序崩溃

其他语句表达式与其他语言相似,想深入了解,文档依然是最好的选择

Dart文档(https://www.dartcn.com/guides/language/language-tour)