三目运算符

1
2
3
4
5
6
expr1 ?? expr2 // 如果expr1 非空,则返回其值,否则返回 expr2 的值

int a = 20;
var val = a > 10 ? a : 0;
// print(val); 20

~/ 除法,返回一个整数结果 (取商)

1
2
3
var val = 12 ~/ 7;
// print(val); 1

级联操作符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 类似于链式调用

Student()
..testMethod()
..testMethod1();

class Student {
void testMethod() {
print("1");
}

void testMethod1() {
print("2");
}
}

as、is 与 is!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// is 如果对象具有指定的类型,则为true

// is! 如果对象具有指定的类型,则为false

// as: 判断属于某种类型
// 使用 as 运算符将对象强制装换为特定类型。通常,可以认为是 is 类型判定后,被判定的对象调用函数的一种缩写形式。

if (emp is Person) {
emp.firsetName = 'Bob';
}

// 使用 as 运算符进行缩写
(emp as Person).firsetName = 'Bod';