11. Dart 函数、箭头函数、匿名函数、立即执行函数及闭包讲解
目录
一、函数的基本使用
1、函数的声明和使用
建议所有函数都声明返回类型,没有返回值声明 void 类型。
void main() { void printTitle(String title) { print('The title : ${title.toString()}'); } String getName(String firstName, String lastName) { String res = 'my name is ${firstName}-${lastName}'; printTitle(res); return res; } int getSum(int num) { int sum = 0; for (int i = 1; i <= num; i++) { sum += i; } return sum; } printTitle(getName('技术博客', 'mybj')); print(getSum(6)); print(getSum(100)); print(getSum(50)); }
运行结果:
The title : my name is 技术博客-mybj The title : my name is 技术博客-mybj 21 5050 1275
2、可选参数 和 默认参数
dart 中声明可选参数,需要在参数列表声明 List
格式的参数列表,表明是可选的。
如果要声明参数的默认值,可以直接在参数后面赋值。
void main() { // 可选参数 & 默认参数 void printInfo(String name, [int? age, String sex = '男']) { if (age == null) { print('my name is ${name}, sex is ${sex}'); } else { print('my name is ${name}, age is ${age}, sex is ${sex}'); } } printInfo('mybj'); printInfo('mybj', 20); printInfo('mybj', 20, '女'); }
运行结果:
my name is mybj, sex is 男 my name is mybj, age is 20, sex is 男 my name is mybj, age is 20, sex is 女
3、命名参数
dart 可以指定参数名称,而不需要传入一个 Map
才能指定名称,这点非常实用,在 flutter 中大多数 widegt
的构造方法中,使用的是命名参数。
// 命名参数 void printInfo2(String name, {int age, String sex = '男'}) { if(age == null) { print('my name is ${name}, sex is ${sex}'); } else { print('my name is ${name}, age is ${age}, sex is ${sex}'); } }
在 Flutter 中如果参数都使用命名参数,要指定某个参数是必须传递的,则需要通过 @required
注解:
class Test { final String name; Test({ @required this.name, }); }
4、函数作为参数
executeFunction(fn, [args]) { if (fn != null) { return fn(args); } }
二、箭头函数
void main() { List l1 = ['前端', '后端']; l1.forEach((item) { print(item); }); l1.forEach((item) => print(item)); }
箭头函数只能有一行,可以省略大括号。
在 map
方法中使用箭头函数:
void main() { List l1 = [1, 2]; var l2 = l1.map((item) { return item % 2 == 0 ? item * 2 : item; }); print(l2.toList()); // [1, 4] var l3 = l1.map((item) => item % 2 == 0 ? item * 2 : item); print(l3); // (1, 4) }
三、匿名函数
void main() { Function getInfo = (String name, int age, [String sex = '男']) { print('My name is ${name}, my age is ${age}, my sex is ${sex}'); }; getInfo('mybj', 30); }
运行结果:
My name is mybj, my age is 30, my sex is 男
四、立即执行函数
void main() { // 立即执行方法 ((name) { print('my name is ${name}'); })('mybj'); }
运行结果:
my name is mybj
五、闭包
void main() { // 闭包 Function getA() { int a = 0; return () { a++; print(a); }; } Function b = getA(); b(); b(); }
运行结果:
1 2
以上就是关于 Dart 函数、箭头函数、匿名函数、立即执行函数及闭包讲解的全部内容,下接我们主要讲 Dart 类 Class。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
码云笔记 » 11. Dart 函数、箭头函数、匿名函数、立即执行函数及闭包讲解
码云笔记 » 11. Dart 函数、箭头函数、匿名函数、立即执行函数及闭包讲解