Day09 | Dart 集合高阶方法与函数基础详解
·
一、集合遍历
1、map
void main() {
List mapList = [1, 3, 5];
// List newMapList = List.empty(growable: true); // 空列表
// for (var i = 0; i < mapList.length; i++) {
// newMapList.add(mapList[i] * 2);
// }
// print(newMapList);
var newMapList = mapList.map((value) {
return value * 2;
});
print(newMapList);
print(newMapList.toList());
}
2、where
void main() {
List whereList = [1, 3, 4, 5, 7, 8, 9];
var newWhereList = whereList.where((value) {
return value > 5;
});
print(newWhereList.toList());
}
3、any
void main() {
List anyList = [1, 3, 4, 5, 7, 8, 9];
var result = anyList.any((value) {
// 只要集合里面有满足条件就返回true
return value > 5;
});
print(result); // true
}
4、every
void main() {
List everyList = [1, 3, 4, 5, 7, 8, 9];
var result = everyList.every((value) {
// 每一个都满足条件返回 true,否则返回 false
return value > 5;
});
print(result);
}
二、函数
Dart 是一种真正面向对象的语言,所以即便函数也是对象并且类型为 Function。
-
内置方法/函数:
print(); -
自定义函数/方法:
语法格式:
返回类型 方法名称 (参数1, 参数2, ...) { 方法体/函数体; return 返回值; }
1、定义函数
void main() {
print('调用系统内置的方法');
}
入口函数外定义方法
void printInfo() {
print('我是一个自定义方法');
}
void main() {
printInfo();
}
定义方法有返回值,且指定返回值的类型为 int
void main() {
int getNum() {
var myNum = 85;
return myNum;
}
var result = getNum();
print(result);
}
指定方法的返回值为 String 类型
String printUserInfo() {
return 'this is str';
}
void main() {
print(printUserInfo());
}
指定方法的返回值为 List 类型
List getList() {
return ['111', '222', '333'];
}
void main() {
print(getList());
}
注意:
- 在 Dart 中,类型是可选,可以省略显示的类型,但仍然建议显示指定类型。
- 函数也是对象,所有函数都有返回值。当没有指定返回值的时候,函数会返回
null。如果强制用void来修饰函数,则函数真的没有返回值。
2、函数作用域
List getList() {
return ['111', '222', '333'];
}
void main() {
void xxx() {
aaa() {
print(getList());
print('aaa');
}
aaa();
}
xxx();
// aaa(); // 错误写法
}
3、函数的参数
函数可以有两种形式的参数:必要参数 和 可选参数。必要参数定义在参数列表前面,可选参数定义在必要参数后面。可选参数可以是 命名的 或 位置的。
注意:
某些 API(特别是 Flutter 控件的构造器)只使用命名参数,即使参数是强制性的。
向函数传入参数或者定义函数参数时,可以使用 尾逗号。
3.1 函数传参
以求和为例,每次修改的都是 i 的取值范围,其他操作都是一样的:
main() { // 1-10 的数字和 var sumA = 0; for (var i = 1; i <= 10; i++) { sumA += i; } print(sumA); // 1-100 的数字和 var sumB = 0; for (var i = 1; i <= 100; i++) { sumB += i; } print(sumB); }像这样重复性的操作就可以封装成方法
main() {
// 传入一个数字,求 1 到这个数的所有数字和
int sumNum(int num) {
// 约束传入变量的类型为 int
var sum = 0;
for (var i = 1; i <= num; i++) {
sum += i;
}
return sum;
}
print(sumNum(10));
print(sumNum(100));
}
定义一个函数打印用户信息
main() {
String printUserInfo(String username, int age) { // 形参
return "姓名:$username---年龄:$age";
}
print(printUserInfo('Cherry', 16)); // 实参
}
更多推荐
所有评论(0)