函數基礎

2020-02-03 23:53 更新

main() 函數

任何應用都必須有一個頂級 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'));
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號