八、函式及相關
阿新 • • 發佈:2022-05-26
1 函式
和C語言一樣,函式由返回值,函式名,函式體組成
int getNum(){}
方法呼叫,使用方法名呼叫即可
getNum();
2 引數
不指定型別引數
int sumNum(n){}
指定型別引數,和C語言一摸一樣
int sumNum(int n,String str){}
3 可選引數
中括號內的引數可傳可不傳
String getUser(String name,[int age,String sex]){}
getUser('張三');
getUser('張三','男');
4 帶預設引數
String getUser(String name,[int age,String sex = ‘男’]){}
getUser('張三',20,'女');
5 命名引數
String getUser(String name,{int age,String sex = ‘男’}){}
getUser('張三',age:20,sex:'女');
6 方法作為引數
a(){ print("aaaa"); } fn(aaa){ aaa(); } fn(a);
7 匿名方法
var fn=(int n){ print("這是個匿名方法"+n); }; fn(1);
8 箭頭函式(注意:方法體只能寫一句話,並且不要加分號)
List items = [1,2,3,4]; var newList = items.forEach((value)=>print(value));
List items = [1,2,3,4]; var newList = items.forEach((value)=>{ print(value) });
9 自執行方法
((){ print("這是自執行方法"); })(); //帶引數 String str = 'aaaa'; ((String args){ print("$args"); })(str);
10 閉包
閉包的產生及作用:
全域性變數特點: 全域性變數常駐記憶體,全域性變數汙染全域性
區域性變數特點: 不常駐記憶體,會被垃圾回收機制回收,不會汙染全域性
閉包產生:常駐記憶體,不汙染全域性
閉包本質:函式巢狀函式,內部函式會呼叫外部函式的變數或引數。
fn(){ var a=123; return (){ a++; print(a); }; } var b = fn(); b(); b(); b();