玩轉 Flutter 之 Dart-函數

玩轉 Flutter 之 Dart-函數

本文不適合小白與非 IT 相關人員閱讀。


一等公民

啥叫一等公民,簡單來說,你可以把函數賦值給一個變量,或者把函數當做一個參數傳給別的函數(比如 callback),如果是 OC,相信還記得被 Block 支配的恐懼吧。。。

比如傳遞函數:

int doSomething(Function callback) {
return callback();
}
int something() {
return 100;
}
main() {
print(doSomething(something)); // 輸出 100
}

又比如改寫上面為賦值變量:

int doSomething(Function callback) {
return callback();
}
Function something = () => 100;
main() {
print(doSomething(something)); // 輸出 100
}

上面的 => 就是傳說中的胖箭頭函數,當函數體只有一句內容時候,可以簡寫函數省略大括號使用胖箭頭,並且胖箭頭默認返回後面的語句,比如上文默認返回 100。


傳參

參數從選填性分為必選參數可選參數兩種,從命名上可以分為常規參數命名參數,下面體驗一下:

// 可選聲明類型
void func1(param, int paramInt) {
print(param);
print(paramInt);
}
// 方括號內參數為可選參數, 前面的是必填後面是可選, 所以又叫做位置可選參數
void func2(param, int paramInt, [double paramDouble]) {
print(param);
print(paramInt);
print(paramDouble);
}
// 命名參數,使用的時候得帶上變量名,注意大括號語法
void func3({bool named1, int named2}) {
print(named1);
print(named2);
}
// 同上,帶默認值轉可選,注意 = 號直接賦值
void func4({bool named1, int named2 = 2}) {
print(named1);
print(named2);
}
main() {
func1(1, 2); // 輸出 1, 2

func2(1, 2, 3.0); // 輸出 1, 2, 3.0
func2(1, 2); // 輸出 1, 2, null,,注意這裡沒有傳入第三個參數
func3(named1: true, named2: 2); // 輸出 true, 2
func4(named1: true); // 輸入 true, 2,注意有了默認值變成可選
}

命名參數非常好用,當你寫通用函數,尤其是偏框架級別的時候,很多時候可以代替部分註釋了。Flutter 裡面用的尤其多。


下篇:類


分享到:


相關文章: