任何應用都必須有一個頂級 main() 函數,作為應用服務的入口。 main() 函數返回值為空,參數為一個可選的 List<String> 。
下面是 web 應用的 main() 函數:
void main() {
querySelector('#sample_text_id')
..text = 'Click me!'
..onClick.listen(reverseText);
}
提示:
以上代碼中的 .. 語法為 級聯(lián)調用 (cascade)。 使用級聯(lián)調用, 可以簡化在一個對象上執(zhí)行的多個操作。
下面是一個命令行應用的 main() 方法,并且使用了輸入參數:
// 這樣運行應用: dart args.dart 1 test
void main(List<String> arguments) {
print(arguments);
assert(arguments.length == 2);
assert(int.parse(arguments[0]) == 1);
assert(arguments[1] == 'test');
}
使用 args library 可以定義和解析命令行參數。
一個函數可以作為另一個函數的參數。 例如:
void printElement(int element) {
print(element);
}
var list = [1, 2, 3];
// 將 printElement 函數作為參數傳遞。
list.forEach(printElement);
同樣可以將一個函數賦值給一個變量,例如:
var loudify = (msg) => '!!! ${msg.toUpperCase()} !!!';
assert(loudify('hello') == '!!! HELLO !!!');
示例中使用了匿名函數,參考下面。
多數函數是有名字的, 比如 main() 和 printElement()。 也可以創(chuàng)建沒有名字的函數,這種函數被稱為 匿名函數, 有時候也被稱為 lambda 或者 closure 。 匿名函數可以賦值到一個變量中, 舉個例子,在一個集合中可以添加或者刪除一個匿名函數。
匿名函數和命名函數看起來類似— 在括號之間可以定義一些參數或可選參數,參數使用逗號分割。
后面大括號中的代碼為函數體:
([[Type] param1[, …]]) { codeBlock; };
下面例子中定義了一個包含一個無類型參數 item 的匿名函數。 list 中的每個元素都會調用這個函數,打印元素位置和值的字符串。
var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
print('${list.indexOf(item)}: $item');
});
void main() {
var list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
print('${list.indexOf(item)}: $item');
});
}
如果函數只有一條語句, 可以使用箭頭簡寫。
list.forEach(
(item) => print('${list.indexOf(item)}: $item'));
更多建議: