【Dart】=> [05] Dart初体验-函数

能够定义并使用Dart函数

学习内容:

  1. 函数定义
  2. 可选和默认参数
  3. 函数对象
  4. 箭头函数
  5. 匿名函数

函数

函数定义

Dart函数的结构:
在这里插入图片描述

调用函数:
在这里插入图片描述

案例:定义计算任意两个整数之和的函数,并返回计算结果

在这里插入图片描述

函数特点

  1. 返回值类型和参数类型都可以省略
  2. 函数都有返回值,如果没有明确指定,默认返回 null
void main() {
  //调用函数
  sum1();

  int ret = sum2(10, 20);
  print(ret);
}

int sum2(int a, int b){
  int ret = a + b;
  return ret;
}

在这里插入图片描述
在这里插入图片描述

可选和默认参数

  1. 可选命名参数:

在这里插入图片描述

void main() {
  printString('zzm', age: 15);
}

// 可选命名参数
void printString(String name, {int? age, String? location = '昌平区'}) {
  print('$name - $age - $location');
}

**注意点:**可选参数必须是可以为空的

  1. 默认参数:在这里插入图片描述

函数对象

在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();
}

综合案例

  1. 案例:计算购物车商品是否全选
// 准备购物车数据
  List carts = [
    {"count": 2, "price": 10.0, "selected": true},
    {"count": 1, "price": 30.0, "selected": false},
    {"count": 5, "price": 20.0, "selected": true}
  ];
  1. 核心逻辑:只要有一个商品未勾选那就是非全选

// 案例:计算购物车商品是否全选
// 核心逻辑:只要有任何一个商品是未勾选的,那么就是非全选
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;
}

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不停喝水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值