【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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短视频账号矩阵剪辑分发系统无人直播技术开发源头

一、全行业独家源头最全面的核心技术 短视频矩阵新玩法是指利用批量自动混剪系统来处理大量短视频,通过智能算法自动进行视频剪辑、场景切换、特效添加等操作,最终生成高质量、精彩纷呈的混剪视频作品的方法和技术。这一方法的出现使得大规模短视频制作…

牛客周赛 Round 3 解题报告 | 珂学家 | 贪心思维场

前言 寒之不寒无水也,热之不热无火也。 整体评价 感觉比较简单,更加侧重于思维吧。和前几场的Round系列,风格不太一样。 A. 游游的7的倍数 因为连续7个数,比如有一个数是7的倍数 因此从个位数中着手添加,是最好的选…

java自定义排序Comparator

📑前言 本文主要是【java】——java自定义排序Comparator的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每…

2024年AMC8历年真题练一练和答案详解(8),以及全真模拟题

今天是1月15日,距离本周五的AMC8正式比赛还有四天时间,已经放寒假了的孩子可以多点时间复习备考,还在准备期末考试的孩子可以先以期末考试为重,忙里偷闲刷一下AMC8的题目保持感觉——系统的知识学习可能时间不够了,可以…

响应式编程初探-自定义实现Reactive Streams规范

最近在学响应式编程,这里先记录下,响应式编程的一些基础内容 1.名词解释 Reactive Streams、Reactor、WebFlux以及响应式编程之间存在密切的关系,它们共同构成了在Java生态系统中处理异步和响应式编程的一系列工具和框架。 Reactive Streams…

参与直播领取龙年大礼盒!23年Coremail社区年终福利大放送

2023年终福利大放送 Coremail 管理员社区是由 Coremail 邮件安全团队、服务团队及多条产品线共同维护,集 7*24h 在线自助查询、技术问答交流、大咖互动分享、资料下载等功能于一体,专属于 Coremail 邮件管理员、安全员成长互动的知识库社区。 转眼间&am…

数据库|数据库范式(待完成)

文章目录 数据库的范式数据库的基本操作什么是数据库的范式产生的背景(没有规范化的坏处/带来的问题)规范化表格设计的要求五大范式的作用——树立标准打个比方——桥的承载能力1NF(1范式)如何转换成合适的一范式 2NF(…

迈向高效LLM微调:低秩适应(LoRA)技术的原理与实践

在快速发展的人工智能领域中,以高效和有效的方式使用大型语言模型(LLM)变得越来越重要。在本文中,您将学习如何以计算高效的方式使用低秩适应(LoRA)对LLM进行调整! 为什么需要微调?…

吼!原来教师这样发布学生期末成绩,轻松没烦恼

​随着科技的进步和教育的不断创新,教师发布学生期末成绩的方式也在逐渐发生变化。传统的方式,如纸质成绩单和口头通知,已经不能满足现代教育的需求。那么,教师应该如何更有效地发布学生期末成绩呢? 一、电子成绩单 电…

2024年【北京市安全员-C3证】复审考试及北京市安全员-C3证证考试

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-C3证复审考试考前必练!安全生产模拟考试一点通每个月更新北京市安全员-C3证证考试题目及答案!多做几遍,其实通过北京市安全员-C3证模拟考试题很简单。 1、【多选题】《…

使用scipy处理图片——任意比例缩放

大纲 缩小放大代码地址 在《使用numpy处理图片——缩放图片》一文中,我们每2个取1个像素来达到图像缩小的效果。这就要求缩小的比例只能是整数倍,而不能支持缩小到0.3倍或者放大到1.5倍这样的效果。 为了支持任意倍数的缩放功能,我们需要使用…

【方法】Excel表格如何“限制编辑区域”?

在制作Excel表格的时候,你是否遇到这些情况?有时候需要限定部分区域让他人协助填写,有时候会有很多数据或公式,要防止误改,否则会引起错误。要保护好这些区域,我们可以给Excel表格设置“限制编辑区域”。 …

微信小程序------WXML模板语法之条件渲染和列表渲染

目录 前言 一、条件渲染 1.wx:if 2. 结合 使用 wx:if 3. hidden 4. wx:if 与 hidden 的对比 二、列表渲染 1. wx:for 2. 手动指定索引和当前项的变量名* 3. wx:key 的使用 前言 上一期我们讲解wxml模版语法中的数据绑定和事件绑定(上一期链接:…

PDF修改技巧之:如何简单方便的编辑PDF文件?

在当今精通技术的世界中,PDF 的使用已变得普遍,尤其是在商业和教育方面。如果您在审阅 PDF 文件时遇到语法或其他错误怎么办? 尽管 PDF 文件不像 Word 或在线文档那样容易编辑,但借助高级工具,您一定可以进行编辑。 …

MySQL的安装

一:MySQL的安装 步骤一: 下载mysql,地址:MySQL :: Download MySQL Installer 在MySQL的官网对其进行下载: 也可以下滑,在下面点击此社区服务器安装进行下载: 步骤二: 进入到下载…

Redis之bigkey

目录 1、什么是bigkey? 2、bigkey大的小 3、bigkey有哪些危害? 4、bigkey如何产生? 5、bigkey如何发现? 6、bigkey如何删除? 7、BigKey调优,惰性释放lazyfree 8、生产上限制keys * /flushdb/flushal…

使用WAF防御网络上的隐蔽威胁之CSRF攻击

在网络安全领域,除了常见的XSS(跨站脚本)攻击外,CSRF(跨站请求伪造)攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下,执行非授权的操作。了解CSRF攻击的机…

2.3数据链路层01

2.3数据链路层 2.3.1数据链路层概述 1、数据链路层在网络体系结构中所处的地位 如下图所示:主机H1给主机H2发送数据,中间要经过三个路由器、电话网、局域网、广域网等多种网络。 从五层协议原理体系结构的角度来看,主机应该具有体系结构中…

数据结构初阶之插入排序与希尔排序详解

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞,评论,收藏。 一起努力,共赴大厂。 目录 一.前言 二.插入排序 …

深入浅出Pytorch宝典1.0

文章目录 前言1. 张量操作2. 自动微分3. 数据加载和处理4. 模型构建和训练5. 预训练模型和迁移学习6. 调试和性能7. 高级特性总结 torch中主要的数据对象主要特点和功能张量的创建 数据处理和转换1.torch.tensor() 创建一个新的张量(Tensor)2.torch.zero…