5.函数
#5.1.函数定义
语法:
返回值类型 函数名(参数类型 参数1, 参数类型 参数2,...) {
// 函数体
return ‘返回值’
}
举例:
void main() {
print(sum(10, 20));
}
num sum(int a, int b) {
return a + b;
}
参数类型是可以省略的
void main() {
print(sum(10, 20));
}
sum(a, b) {
return a + b;
}
如果没有指定返回值,默认返回null
void main() {
print(sum(10, 20));
}
sum(a, b) {
print(a + b);
}
支持箭头函数
void main() {
var fn = (a, b) => a + b ;
print(fn(10, 20));
}
#5.2.可选参数
1.可选命名参数
void main() {
// 通过设置age这样的前缀来和可选参数对应,意味着如果三个参数都传的话 age和gender的位置是可以换的 例如这样:person('小强',gender: '男', age: 18)
print(person('小强', age: 18));
}
String person(String name, {int age, String gender}) {
return '${name} - ${age} - ${gender}';
}
2.可选位置参数
位置参数的形参和实参是通过位置来一一对应的
void main() {
// 注意位置不能调换
print(person('小强', 18, '男'));
}
String person(String name, [int age, String gender]) {
return '${name} - ${age} - ${gender}';
}
#5.3.参数默认值
void main() {
// 没有传入gender 使用默认值
print(person('小强',age: 18));
}
String person(String name , {int age, String gender = '男'}) {
return '${name} - ${age} - ${gender}';
}
#5.4.函数参数
void main() {
print(printPerson(person));
}
String person(String name , {int age}) {
return '${name} - ${age}';
}
String printPerson (String fn(String name , {int age})) {
String name1 = 'xiaoqiang';
int age = 18;
return fn(name1, age: 18);
}
#5.5.匿名函数
void main() {
String str1 = printPerson((String name, {int age}){return '${name} - ${age}';});
print(str1);
}
String person(String name , {int age}) {
return '${name} - ${age}';
}
String printPerson (String fn(String name , {int age})) {
String name1 = 'xiaoqiang';
int age = 18;
return fn(name1, age: 18);
}
void main() {
var fn = (String name, int age) {
return '${name} - ${age}';
};
print( fn('xiaoqiang', 20));
}
void main() {
// 匿名函数自执行
var s = ((String name, int age) {
return '${name} - ${age}';
})('xiaoqiang', 30);
print(s);
}
#5.6.闭包
闭包的形式就是函数中套函数,作用是可以通过闭包把函数中的私有变量暴露出去
void main() {
var f = fn();
f();
f();
f();
f();
f();
}
fn () {
var n = 0;
fn1 () {
n++;
print(n);
};
return fn1;
}
网友评论