感君一回顾,思君朝与暮。
<一>dart方法和箭头函数
- dart中方法,方法也是一个对象。当方法的执行语句只有一句的时候,可以是由箭头函数=>表达式
void main() => functionTest(); void functionTest() { printString('functionTest'); }
- 方法的返回值和参数类型可以省略,sum方法和sum方法1是相同的
int sum(int a, int b) { return a + b; } sum1(a , b) { return a + b; }
<二>dart方法中的可选参数
- 可选参数:传递参数的时候必须带上形参的名字 我们在方法中添加可选参数时,用{}表示,并添加名字
int sum2(int a,{int b = 0,int c = 0}) { // b ??= 0; //处理b,c为空的情况 // c ??= 0; return (a + b + c); }
- 调用
printString(sum2(10,b: 20,c: 10)); //输出的结果为 40
<三>dart中方法作为参数传递
- 方法也是一个对象,可以赋值一个变量,我们可以直接调用这个变量,当方法有返回方法时
var fun1 = fun(); printString(fun1()); //输出结果123
fun() { return () => '123'; }
- 我们定义一个数组,打印里面的元素,类似我们iOS中的for循环和enumerateObjectsUsingBlock
var list = ['1','2','3','4']; list.forEach((element) { printString(element); }); for(var element in list) { printString(element); }; list.forEach(printString); //输出结果均为 1 2 3 4
- 我们把函数作为参数传递的话类似block闭包。list.forEach(print)中我们把print方法作为参数传递进去。
- 我们也可以把匿名函数作为参数进行传递
int b = 0; forEachDemo1(list, (var a) { b++; print('$b= $a='); }); //输出 // flutter: 1= 1= // flutter: 2= 2= // flutter: 3= 3= // flutter: 4= 4=
forEachDemo1(List list, void func(var element)) { for (var element in list) func (element); }
<四>dart方法中的闭包
- 定义在函数里面的函数就是闭包,闭包也是一个对象
var fun1 = fun(); printString(fun1()); printString(fun1()); printString(fun1()); //输出结果:0 1 2
fun() { int count = 0; return () => count++; }
网友评论