【笔记】Dart的函数
前言
Dart的函数学习笔记
主函数
- 程序的入口
1 | void main() { |
定义函数
- 定义自定义函数
- 函数名通常采用驼峰命名法
返回值
有返回值的函数
1 | 返回值类型 函数名(参数列表) { |
没有返回值的函数
1 | void 函数名(参数列表) { |
任意返回值的函数
- 返回值为自动推导类型
1 | 函数名() { |
参数列表
没有参数列表的函数
1 | void 函数名() { |
直接指定形参名
- 直接指定形参名时,可以传递任意类型的形参
1 | void 函数名(形参名, 形参名) { |
指定形参类型
1 | void 函数名(数据类型 形参名, 数据类型 形参名) { |
指定可选参数
- 如果指定可选参数,在函数调用时可以传参也可以不传参
- 可选参数用
[]包裹,多个可选参数用一对[]包裹,用,分隔 - 可选参数需要写在参数列表末尾
- 可选参数在调用时是根据传参顺序决定参数的赋值的
1 | void 函数名(数据类型 形参名, [数据类型 形参名, 数据类型 形参名]) { |
默认参数
- 提供参数的默认值。如果可选参数不传递参数,则赋值为默认值
- 可选参数的默认参数通常放在其他可选参数的前面
1 | void 函数名(数据类型 形参名, [数据类型 形参名=默认值, 数据类型 形参名]) { |
指定命名参数
- 如果指定命名参数,在函数调用时可以传参也可以不传参
- 命名参数用
{}包裹,多个命名参数用一对{}包裹,用,分隔 - 命名参数需要写在参数列表末尾
- 命名参数在调用时是根据形参名决定参数的赋值的
1 | void 函数名(数据类型 形参名, {数据类型 形参名, 数据类型 形参名}) { |
默认参数
- 提供参数的默认值。如果可选参数不传递参数,则赋值为默认值
- 命名参数的默认参数可以不放在其他可选参数的前面,因为命名参数的调用是通过参数名决定参数的赋值的
1 | void 函数名(数据类型 形参名, {数据类型 形参名=默认值, 数据类型 形参名}) { |
把函数作为参数传递
1 | void 函数名1(参数名) { |
匿名函数
1 | var 变量名 = (参数列表) { |
箭头函数
- 箭头函数的函数体只能写一句代码
1 | (参数列表)=>{ |
- 如果箭头函数的函数体省略了
{},那么无需写return即可将返回值返回
1 | (参数列表)=>函数体 |
自执行函数
- 在定义函数后,立即执行函数
1 | ((形参列表) { |
递归函数
- 函数内部自己调用自己的函数
1 | void 函数名() { |
闭包
- 全局变量:可以常驻内存,但是数据可能会被污染
- 局部变量:会被垃圾回收,不会常驻内存,数据不会污染
- 闭包:函数的返回值是一个匿名函数,这个匿名函数定义了一些变量,这些变量既不会被污染,也不会被垃圾回收
1 | void 函数名() { |
调用函数
无返回值
1 | 函数名(参数列表); |
有返回值
1 | var 返回值 = 函数名(参数列表); |
函数的作用域
- 在函数内部定义的函数为局部函数
- 局部作用域定义的函数只能在作用域内部调用,不能在全局调用
1 | void 函数名() { |