1.dart 聲明一個(gè)方法
例如聲明一個(gè)返回值為 String類(lèi)型的函數(shù)?
String func(String name,int age){
?return "name=$name,age=$age"
}
如果沒(méi)有返回值 dart會(huì)默認(rèn)返回一個(gè)null ;
void func(){} 表示沒(méi)有返回值的函數(shù);
也可以用箭頭函數(shù) func(name,age)=>"name=$name,age=$age";
2.可選參數(shù)
func(String name,{int age,String gender})=>print("name=$name,age=$age");//聲明參數(shù) 第二個(gè)可選是否輸入
void main(){
? ? ?func('參數(shù)');//傳入一個(gè)參數(shù)?
? ? func('參數(shù)',gender:"性別");//可選參數(shù)為map類(lèi)型 傳遞可選參數(shù)可以不按照順序傳入
}
注意的是 聲明可選參數(shù)必須在正常參數(shù)的后面!
func1(String name,[int age,String gender]){};//注意這里用的是列表 參數(shù)傳入必須按照順序
3.函數(shù)默認(rèn)參數(shù)
func(String name,{int age=20,String gender="111"});//這里默認(rèn)參數(shù)是當(dāng)沒(méi)有傳入該參數(shù)時(shí),函數(shù)默認(rèn)的為其賦值
4.方法也是對(duì)象 可以將定義的函數(shù)當(dāng)成參數(shù)傳入另一個(gè)函數(shù)
5.匿名函數(shù)
void main(){
? ? var fun=(str){ ?//匿名函數(shù)可以通過(guò)賦值給一個(gè)變量來(lái)使用
? ? ? ? return "hello ${str}";
? ? ?}
? ?fun('name');
}
Function a(list,(str){return str*2;}){//也可以通過(guò)參數(shù)的形式直接傳入
}
6.閉包
1.閉包是一個(gè)方法
2.閉包定義在其他方法內(nèi)部
3.閉包能訪問(wèn)外部方法內(nèi)的局部變量,并持有其狀態(tài)
列如:
void main(){
? ? ? ? var func=aa();
? ? ? ? func();
? ? ? ? func();
}
aa(){
? ? int count=0;
? ? return (){
? ? ? ? print(count++);
? ? ?}
}