能够定义并使用Dart函数
学习内容:
函数定义
Dart函数的结构:
调用函数:
案例:定义计算任意两个整数之和的函数,并返回计算结果
void main() {
//调用函数
sum1();
int ret = sum2(10, 20);
print(ret);
}
int sum2(int a, int b){
int ret = a + b;
return ret;
}
void main() {
printString('zzm', age: 15);
}
// 可选命名参数
void printString(String name, {int? age, String? location = '昌平区'}) {
print('$name - $age - $location');
}
**注意点:**可选参数必须是可以为空的
在Dart中,一切都是对象,函数也是对象,类型是Function
函数可作为对象赋值给其他变量
函数可作为参数传递给其他函数
void main() {
// 定义一个变量接收函数
// var f = funcDemo1;
Function f = funcDemo1;
f();
funcDemo2(funcDemo3);
}
// 函数可以作为对象赋值给其他变量
void funcDemo1() {
print('funcDemo1');
}
// 函数可以作为参数传递给其他函数
void funcDemo2(Function func) {
// 调用外界传入的函数
func();
}
// 定义作为参数的函数: 把funcDemo3传入到funcDemo2
void funcDemo3() {
print('funcDemo3');
}
函数体只包含一个表达式时,可以使用箭头函数进行简写
简写
提示:=>
表达式 是对 { return 表达式 }
的简写
void main() {
int ret1 = sum1(10, 20);
print(ret1);
int ret2 = sum2(30, 40);
print(ret2);
}
int sum1(int a, int b) {
return a + b; // 函数体只有一个表达式
}
// 使用箭头函数简写只有一个表达式的函数体
int sum2(int a, int b) => a + b;
匿名函数是一种没有函数名称的函数。
但是和其他函数一样,它也有形参列表,也可以有可选参数。
特点:
使用场景:
void main() {
// 匿名函数
// 匿名函数赋值给变量,并调用
Function f = () {
print('这是一个匿名函数');
};
f();
// 可以作为参数传递给其他函数去调用(回调函数)
funcDemo(() {
print('这个匿名函数是个参数');
});
}
// 定义一个接收函数作为参数的函数
void funcDemo(Function func) {
func();
}
// 准备购物车数据
List carts = [
{"count": 2, "price": 10.0, "selected": true},
{"count": 1, "price": 30.0, "selected": false},
{"count": 5, "price": 20.0, "selected": true}
];
// 案例:计算购物车商品是否全选
// 核心逻辑:只要有任何一个商品是未勾选的,那么就是非全选
bool getSelectedState(List carts) {
// 购物车初始的状态:默认是全选
bool isSelectedAll = true;
carts.forEach((element) {
bool selected = element['selected'];
// 核心代码:只要有任何一个商品是非勾选的,则购物车就是非全选
if (selected == false) {
isSelectedAll = false;
}
});
return isSelectedAll;
}
整体代码
void main() {
// 准备购物车数据
List carts = [
{"count": 2, "price": 10.0, "selected": true},
{"count": 1, "price": 30.0, "selected": false},
{"count": 5, "price": 20.0, "selected": true}
];
bool isSelectedAll = getSelectedState(carts);
if (isSelectedAll) {
print('全选');
} else {
print('非全选');
}
}
// 案例:计算购物车商品是否全选
// 核心逻辑:只要有任何一个商品是未勾选的,那么就是非全选
bool getSelectedState(List carts) {
// 购物车初始的状态:默认是全选
bool isSelectedAll = true;
carts.forEach((element) {
bool selected = element['selected'];
// 核心代码:只要有任何一个商品是非勾选的,则购物车就是非全选
if (selected == false) {
isSelectedAll = false;
}
});
return isSelectedAll;
}