5.函數(shù)
#5.1.函數(shù)定義
語法:
返回值類型 函數(shù)名(參數(shù)類型 參數(shù)1, 參數(shù)類型 參數(shù)2熏纯,...) {
// 函數(shù)體
return ‘返回值’
}
舉例:
void main() {
print(sum(10, 20));
}
num sum(int a, int b) {
return a + b;
}
參數(shù)類型是可以省略的
void main() {
print(sum(10, 20));
}
sum(a, b) {
return a + b;
}
如果沒有指定返回值愧驱,默認(rèn)返回null
void main() {
print(sum(10, 20));
}
sum(a, b) {
print(a + b);
}
支持箭頭函數(shù)
void main() {
var fn = (a, b) => a + b ;
print(fn(10, 20));
}
#5.2.可選參數(shù)
1.可選命名參數(shù)
void main() {
// 通過設(shè)置age這樣的前綴來和可選參數(shù)對應(yīng)木西,意味著如果三個參數(shù)都傳的話 age和gender的位置是可以換的 例如這樣:person('小強(qiáng)',gender: '男', age: 18)
print(person('小強(qiáng)', age: 18));
}
String person(String name, {int age, String gender}) {
return '${name} - ${age} - ${gender}';
}
2.可選位置參數(shù)
位置參數(shù)的形參和實(shí)參是通過位置來一一對應(yīng)的
void main() {
// 注意位置不能調(diào)換
print(person('小強(qiáng)', 18, '男'));
}
String person(String name, [int age, String gender]) {
return '${name} - ${age} - ${gender}';
}
#5.3.參數(shù)默認(rèn)值
void main() {
// 沒有傳入gender 使用默認(rèn)值
print(person('小強(qiáng)',age: 18));
}
String person(String name , {int age, String gender = '男'}) {
return '${name} - ${age} - ${gender}';
}
#5.4.函數(shù)參數(shù)
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.匿名函數(shù)
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() {
// 匿名函數(shù)自執(zhí)行
var s = ((String name, int age) {
return '${name} - ${age}';
})('xiaoqiang', 30);
print(s);
}
#5.6.閉包
閉包的形式就是函數(shù)中套函數(shù),作用是可以通過閉包把函數(shù)中的私有變量暴露出去
void main() {
var f = fn();
f();
f();
f();
f();
f();
}
fn () {
var n = 0;
fn1 () {
n++;
print(n);
};
return fn1;
}