购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.6 函数

Dart是一种真正的面向对象语言,因此既是函数也是对象并且具有类型Function。这意味着函数可以分配给变量或作为参数传递给其他函数。

1.定义方法

和绝大多数编程语言一样,Dart函数通常的定义方式如代码示例5-13所示。

代码示例5-13 chapter05/03/01_func.dart

如果函数体中只包含一个表达式,则可以使用简写语法,代码如下。

2.可选参数

Dart函数可以设置可选参数,可以使用命名参数,也可以使用位置参数。

命名参数,定义格式如{param1,param2,...},如代码示例5-14所示。

代码示例5-14 chapter05/03/02_func_param1.dart

位置参数,使用[]来标记可选参数,如代码示例5-15所示。

代码示例5-15 chapter05/03/03_func_param2.dart

3.默认值

函数的可选参数也可以使用等号(=)设置默认值,如代码示例5-16所示。

代码示例5-16 chapter05/03/04_func_param4.dart

4.main()函数

和其他编程语言一样,Dart中每个应用程序都必须有一个顶级main()函数,该函数作为应用程序的入口,代码如下:

5.函数作为参数

Dart中的函数可以作为另一个函数的参数,如代码示例5-17所示。

代码示例5-17 chapter05/03/05_func_fn.dart

6.匿名函数

在Dart中可以创建一个没有函数名称的函数,这种函数称为匿名函数,或者称为lambda函数、闭包函数,但是和其他函数一样,它也有形参列表,可以有可选参数,如代码示例5-18所示。

代码示例5-18 chapter05/03/06_func_lambda.dart

匿名函数就是没有名字的函数,代码如下:

匿名函数通常用在不需要被其他场景调用的情况,例如遍历一个list,代码如下:

其他的用法如下:

7.嵌套函数

Dart支持嵌套函数,也就是函数中可以定义函数,如代码示例5-19所示。

代码示例5-19 chapter05/03/07_func_loop.dart

8.函数闭包

闭包是一种方法(对象),它定义在其他方法内部,闭包能够访问外部方法中的局部变量,并持有其状态,如代码示例5-20所示。

代码示例5-20 chapter05/03/08_func_closer.dart WY/fqMEwSO1iSZPbGJVfHc+k4pwkMYaC94XS6rFLuc1c9UOOC7JNW8d1tn/BK627

点击中间区域
呼出菜单
上一章
目录
下一章
×