持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
运算符
在 Dart 的运算符中,很多运算符同其他语言一样。关于这些相同运算符的使用这里就不多做功课了,但是,对于 Dart 中特殊的运算符这里会做对应的说明
类型判断运算符
使用 runtimeType、is、is! 进行类型检测
String city = "Dart";
if (city.runtimeType == String) {
print("String 类型");
} else {
print("非 String 类型");
}
if (city is String) {
print("String类型");
} else {
print("非String类型");
}
if (city is! String) {
print("非String类型");
} else {
print("String类型");
}
值的检查
使用 isEmpty、isNotEmpty、isNaN、null 进行值的检查
String job = "法师";
if (job.isEmpty) {
print("空空如也");
} else {
print(job); //法师
}
if (job.isNotEmpty) {
print(job); //法师
} else {
print("空空如也");
}
var level = 0 / 0;
if (level.isNaN) {
print("非数字"); //非数字
} else {
print("数字");
}
var car;
if (car == null) {
print("空空如也"); //空空如也
} else {
print(car);
}
var count = 0;
assert(count <= 0);
if (count <= 0) {
print("空空如也"); //空空如也
} else {
print("富甲一方");
}
赋值运算符 ??=
-
当变量为
null时,使用后面的内容进行赋值void main(List<String> args) { var str = null; str ??= "dart"; print(str); } -
当变量有值时,使用自己原来的值
void main(List<String> args) { var str = "dart"; str ??= "java"; print(str); // dart }
条件表达式 ??
-
将
obj1赋值给obj3,如果obj1是null,则返回obj2的结果void main(List<String> args) { var obj1 = null; var obj2 = "java"; var obj3 = obj1 ?? obj2; print(obj3); // java } -
将
obj1赋值给obj3,如果obj1不是null,直接使用obj1的结果void main(List<String> args) { var obj1 = "dart"; var obj2 = "java"; var obj3 = obj1 ?? obj2; print(obj3); //dart }
级联语法..
在同一个对象上连续调用多个对象的变量或方法
class Student {
String? name;
int? age;
void sayHI() {
print("我的名字叫$name, 我今年$age岁");
}
void study() {
print("study");
}
void play() {
print("play");
}
}
void main(List<String> args) {
// 普通调用方式
final stu = Student();
stu.name = "xiaoming";
stu.age = 12;
stu.sayHI();
stu.study();
stu.play();
// 使用级联语法调用
final stu1 = Student()
..name = "hanmeimei"
..age = 12
..sayHI()
..study()
..play();
}
流程控制语句
同样,在 Dart 的流程控制语句中,很多流程控制语句同其他语言一样。关于这些相同流程控制语句的使用这里就不多做功课了,但是,对于 Dart 中特殊的流程控制语句这里会做对应的说明
if 和 else
关于 if 的判断,不支持非空即真或者非 0 即真,必须有明确的 bool 类型
-
错误写法
final stu = Student(); if (stu.athletes) { print(stu.athletes); } -
正确写法
final stu = Student(); if (stu.athletes == true) { print(stu.athletes); }
switch-case
在 dart 中,每一个 case 语句,默认情况下必须以一个 break 结尾
main(List<String> args) {
var direction = 'east';
switch (direction) {
case 'east':
print('东面');
break;
case 'south':
print('南面');
break;
case 'west':
print('西面');
break;
case 'north':
print('北面');
break;
default:
print('其他方向');
}
}