带你读《深入浅出Dart》五、函数

简介: 带你读《深入浅出Dart》五、函数

五、函数

Dart语言作为一门面向对象的语言,函数在其中占据了非常重要的位置。本文将详细解析如何定义和调用函数,以及箭头语法,高阶函数和闭包等内容。

1. 函数的定义和调用

在Dart中,函数可以定义为一段实现特定功能的代码块,可以带有参数和返回值。

定义函数:

 

void printHello(String name) {
  print('Hello, $name');}

 

调用函数:

 

printHello('Dart');

2. 箭头语法

当函数体只有一句话的时候,我们可以使用箭头语法来简化函数的定义。

void printHello(String name) => print('Hello, $name');
printHello('Dart');

3. 高阶函数

高阶函数是指可以接收函数作为参数,或者返回函数的函数。Dart语言支持高阶函数。

例如,下面的calculate函数接受两个参数和一个函数,然后使用传入的函数来操作参数:

 

void calculate(int a, int b, Function operation) {
  print(operation(a, b));}
calculate(2, 3, (a, b) => a * b);

4. 闭包

在Dart中,闭包可以定义为一个函数对象,即使其函数对象的调用在它原始范围之外,也能够访问在它词法范围内的变量。换句话说,闭包是一个能够读取其他函数内部变量的函数。

Function makeAdder(int addBy) {
  return (int i) => addBy + i;}
void main() {
  var adder = makeAdder(2);
  print(adder(3)); // 输出5}

 

在上述代码中,makeAdder函数返回一个新的函数,这个新的函数能够访问makeAdder函数的内部变量addBy

 

相关文章
[c++][记录]编译libusb-win32过程
[c++][记录]编译libusb-win32过程
524 0
|
9月前
|
JavaScript 安全 前端开发
Gzm Design:开源神器!用 Vue3、Vite4、TypeScript 革新海报设计,免费开源的海报设计器,主流技术打造,轻松高效
海报设计在各个领域都有着广泛的应用,无论是商业广告、活动宣传还是个人创意表达。今天要给大家介绍一款免费开源的海报设计器——Gzm Design,它基于最新的主流技术开发,为用户提供了丰富的功能,让海报设计变得轻松又高效。
541 64
|
7月前
|
数据采集 存储 开发者
如何动态调整Python爬虫的Request请求延迟
如何动态调整Python爬虫的Request请求延迟
286 13
|
前端开发 开发者
useContext 钩子详解
【10月更文挑战第14天】`useContext` 是 React 中的一个 Hook,用于在组件树中传递数据,避免手动传递 props。本文从基本概念、使用方法、常见问题及解决方法等方面详细介绍了 `useContext`,并提供了代码示例,帮助开发者更好地理解和应用这一钩子。
412 6
|
监控 数据挖掘 OLAP
深入解析:AnalyticDB中的高级查询优化与性能调优
【10月更文挑战第22天】 AnalyticDB(ADB)是阿里云推出的一款实时OLAP数据库服务,它能够处理大规模的数据分析任务,提供亚秒级的查询响应时间。对于已经熟悉AnalyticDB基本操作的用户来说,如何通过查询优化和性能调优来提高数据处理效率,是进一步提升系统性能的关键。本文将从个人的角度出发,结合实际经验,深入探讨AnalyticDB中的高级查询优化与性能调优技巧。
602 4
|
文字识别 算法 数据挖掘
视觉智能开放平台产品使用合集之对于统计研究和数据分析,有哪些比较好的工具推荐
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
190 0
|
11月前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
305 12
|
索引 容器
仓储设计实现问题之仓储设计时考虑放置实体的问题如何解决
仓储设计实现问题之仓储设计时考虑放置实体的问题如何解决
83 0
仓储设计实现问题之仓储设计时考虑放置实体的问题如何解决
|
监控 安全 Linux
网络安全事件应急响应
应急响应是针对网络安全事件的快速处理流程,包括信息收集、事件判断、深入分析、清理处置、报告产出等环节。具体步骤涵盖准备、检测、抑制、根除、恢复和总结。
|
JavaScript
Vue3基础(23)___vue3非父子组件之间的通信
本文介绍了Vue 3中非父子组件间通信的方法,通过创建一个事件集合对象和相应的触发监听函数,实现跨组件的事件传递和监听。
269 0