通过实战了解Dart的函数常用知识点
通过简单的实例,更快捷的了解Dart函数相关知识。示例以最简单的sum 函数开始。
函数定义
方法一
首先我们 以JavaScript的方式定义Sum函数
代码语言:javascript复制 sum(a, b) {
return a b;
}
print(sum(2, 3));
运行一下是可以的,类型和返回值都会自动的推断,默认dynamic
方法二
我们加上类型改造下sum,这样就限制了传入类型。
代码语言:javascript复制 int sum(int a, int b) {
return a b;
}
方法三(简写)
当然,简单的表达式可以省略部分
代码语言:javascript复制 sum(a, b) => a b;
函数命名参数
函数传入的时候,我们想显示a,b 参数的名称。dart 既支持像js 一样传参,又满足C家族函数形参名的形式。
代码语言:javascript复制 sum({required int a, required int b}) {
return a b;
}
sum(a: 3, b: 4);
函数可选参数
可选参数分为两类:
- 匿名参数可选
- 具名参数可选
匿名参数可选
sum 添加一个参数c,可选。可选部分加上[]
即可
sum(a, b, [c]) {
return a b (c ?? 0);
}
sum(2, 2);
具名参数可选
具名参数,需要加上可选修饰符?
代码语言:javascript复制 sum({required int a, required int b, int? c}) {
return a b (c ?? 0);
}
sum(a: 3, b: 4);
函数默认值
- 只有可选参数才有默认值,必选参数不能设置
- 可选参数如果不写默认值,默认为null
sum({required int a, required int b, int? c = 2}) {
return a b (c ?? 0);
}
sum(a: 3, b: 4);
匿名函数 和 箭头表达式
匿名函数
匿名函数格式:
([[Type] param1[, …]]) { codeBlock; };
函数作为对象可以赋值给变量,我们可以写一个匿名sum函数赋值给变量.
把刚才的函数改造下,删去名字即可。
代码语言:javascript复制 Function aa = ({required int a, required int b, int? c = 2}) {
return a b (c ?? 0);
};
aa(a: 3, b: 4);
箭头表达式
dart 匿名函数 对应js 箭头函数。dart 箭头函数作用只是省略{} ,后面跟表达式。
代码语言:javascript复制Function aa = ({required int a, required int b, int? c = 2}) => a b (c ?? 0)
aa(a: 3, b: 4);