方法也是對(duì)象,Function
返回值類(lèi)型、參數(shù)類(lèi)型可省略
箭頭語(yǔ)法: = > expr 也就是{return expr} 只適用于一個(gè)表達(dá)式颂跨,方法都有返回值,如果沒(méi)有指定則默認(rèn)return null
- 可選參數(shù)(可選命名參數(shù),可選位置參數(shù))
//可選命名參數(shù)
//用的大括號(hào)
//大括號(hào)中倆參數(shù)是可以不傳入的
//傳的時(shí)候指定參數(shù)名對(duì)應(yīng)傳入
printPerson(String name, {int age, String gender}){
print("name = $name, age = $age, gender = $gender");
}
//可選位置參數(shù)
//用的中括號(hào)
//傳的時(shí)候是按位置傳的
printPerson2(String name, [int age, String gender]){
print("name = $name, age = $age, gender = $gender");
}
void main(){
printPerson("zhang");
printPerson("zhang",age:20)
printPerson("zhang",gender:"Male");
printPerson2("zhang");
printPerson2("zhang",20)
printPerson2("zhang",20,"Male");
}
注意的是稚字,普通參數(shù)一定在可選參數(shù)前面
- 默認(rèn)參數(shù)值(基于可選參數(shù)泼橘,值只能是編譯期常量)
- 方法對(duì)象Function
1.可以作為對(duì)象賦值給另一個(gè)Function變量
void main(){
var func = printHello;//Function func = printHello
func();//調(diào)用時(shí)候只需要加個(gè)括號(hào)就可以涝动!
}
void printHello(){
print("Hello");
}
2.可以作為參數(shù)傳遞給其他方法
void main(){
var list2 = ["h","e","l"];
pirnt(listTimes(list2, times));
}
List listTimes(List list, String times(str)){
for(var index = 0; index < list.length; index++){
list[index] = times(list[index]);
}
return list;
}
String times(str){
return str * 3;
}
- 匿名方法 參數(shù)列表 + 方法體
(參數(shù)1, 參數(shù)2, ....){
方法體...
return 返回值
}
1.可以賦值給一個(gè)變量炬灭,通過(guò)變量進(jìn)行調(diào)用
一個(gè)極端的例子醋粟。
void main(){
var func = (str){
print("Hello --- $str");
};
func(30);
((){
print("Test");
}).();
}
2.可以在其它方法中直接調(diào)用或者傳遞給其他方法
上面那個(gè)times例子就可以改成
print(listTimes(list2, (str){return str * 3}));