控制语句
4-1if语句
void main() {
int score = 100;
if (score >= 90) {
if (score == 100) {
print('完美');
} else {
print('优秀');
}
} else if (score > 60) {
print('良好');
} else if (score == 60) {
print('及格');
} else {
print('不及格');
}
}
4-2for语句
void main() {
var list = [1, 2, 3, 4, 5];
// for循环
for (var index = 0; index < list.length; index++) {
print(list[index]);
}
// 不须要使用下标时 能够使用这种方法遍历列表的元素
for (var item in list) {
print(item);
}
}
4-3while语句
void main() {
int c = 0;
// 当c<5时就循环打印c 打完加1
while (c < 5) {
print(c++);
}
// 先执行do再进行while循环
do {
print(c--);
} while (c > 0 && c < 5);
}
4-4break和continue
void main() {
var list = [1, 2, 3];
for (var i in list) {
// if (i != 2) {
// print(i);
// }
if (i == 2) {
//跳出当前循环
// break;
// 打印1,3会跳过当前这种状况继续执行
continue;
}
print(i);
}
print('----------');
var list2 = [4, 5, 6];
for (var a in list2) {
if (a == 5) {
//只会终止本身所在的for循环 外边还有嵌套的for循环 不会终止
break;
}
print(a);
}
}
4-5switch...case语句
void main() {
String lan = 'java';
// switch case 每一个case后面要跟一个break;默认是default
switch (lan) {
case 'dart':
print('dart is my fav');
break;
case 'java':
print('java is my fav');
break;
default:
print('none');
}
switch (lan) {
D:
case 'dart':
print('dart is my fav');
break;
case 'java':
print('java is my fav');
// 先执行当前case中的 而后跳转到D中的case继续执行
continue D;
// break;
default:
print('none');
}
}
方法
5-1方法的定义
// void是没有返回值的 返回值类型:方法名(参数){return:返回值}
//"f:\vscodexm\dartlearn\chapter5\function_declaration.dart" 1 'test' true
// 方法也是对象 而且有具体类型的function
// 返回值类型 参数类型 均可以省略
// 箭头语法简化代码 只适用于一个表达式
// 方法都有返回值 没指定 return null
void main(List args) {
print(args);
print(geta('张三', 18));
printp('李四', 20);
}
// String geta(String name,int age){
// return 'name=$name,age=$age';
// }
// =>箭头能够表示返回值 箭头后面能够跟表达式
int gender = 2;
geta(name, age) => gender == 1 ? 'name=$name,age=$age' : 'test';
// 返回值类型 和参数类型能够省略 默认为void
// printp(name,age){
// print('name=$name,age=$age');
// }
void printp(String name, int age) {
print('name=$name,age=$age');
}
5-2可选参数
// void是没有返回值的 返回值类型:方法名(参数){return:返回值}
//"f:\vscodexm\dartlearn\chapter5\function_declaration.dart" 1 'test' true
// 方法也是对象 而且有具体类型的function
// 返回值类型 参数类型 均可以省略
// 箭头语法简化代码 只适用于一个表达式
// 方法都有返回值 没指定 return null
void main(List args) {
print(args);
print(geta('张三', 18));
printp('李四', 20);
}
// String geta(String name,int age){
// return 'name=$name,age=$age';
// }
// =>箭头能够表示返回值 箭头后面能够跟表达式
int gender = 2;
geta(name, age) => gender == 1 ? 'name=$name,age=$age' : 'test';
// 返回值类型 和参数类型能够省略 默认为void
// printp(name,age){
// print('name=$name,age=$age');
// }
void printp(String name, int age) {
print('name=$name,age=$age');
}
5-3默认参数值
void main() {
// name=xxx,gender=null,age=null调用这个方法后两个参数可不传
printp('xxx');
// name=xxx,gender=male,age=20{}根据命名来
printp('xxx', gender: 'male');
printp('xxx', age: 20);
}
// {int age=30,String gender='female'}设置默认参数
printp(String name, {int age = 30, String gender = 'female'}) {
print('name=$name,gender=$gender,age=$age');
}
### 5-4方法对象
void main() {
var func = printhello;
Function func1 = printhello;
func();
func1();
// 方法做为一个参数进行传递
var list = [1, 2, 3, 4];
list.forEach(print);
var list2 = ['a', 'b', 'c'];
// [aaa, bbb, ccc一个方法 做为其余方法参数进行传递
print(listtimes(list2, times));
}
// dart中方法也都是对象 能够赋值给其余对象或变量
void printhello() {
print('hello');
}
List listtimes(List list, String times(str)) {
for (var i = 0; i < list.length; i++) {
list[i] = times(list[i]);
}
return list;
}
String times(str) {
return str * 3;
}
5-5匿名方法
void main() {
// 匿名方法 能够经过赋值给对象或者方法来调用
// (){
// print('hello');
// };
// 匿名方法也能够传参
var func = (str) {
print('hello----$str');
};
func(30);
// 直接调用匿名方法 不推荐使用
(() {
print('test不推荐');
})();
var list2 = ['a', 'b', 'c'];
var result = listtimes(list2, (str) => str * 3);
print(result);
// listtimes(list2, (str){return str*3;});
}
List listtimes(List list, String times(str)) {
for (var i = 0; i < list.length; i++) {
list[i] = times(list[i]);
}
return list;
}
5-6闭包
// 闭包是一个方法(对象)
// 闭包定义在其余方法内部
// 闭包可以访问外部方法中的局部变量,并持有其状态
void main() {
var func = a();
func();
func();
func();
func();
}
a() {
int count = 0;
//printCount是一个闭包 能够持有a中count的状态 也能够使用匿名方法
// printCount(){
// print(count++);
// }
// return printCount;
// 匿名方法
return () {
print(count++);
};
}