功能範圍

Dart 函式也可以匿名宣告或巢狀宣告。例如,要建立巢狀函式,只需在現有功能塊中開啟一個新功能塊

void outerFunction() {
  
    bool innerFunction() {
        /// Does stuff
    }
}

函式 innerFunction 現在可以在 outerFunction 內部使用,也可以僅在內部使用。沒有其他其他功能可以訪問它。

Dart 中的函式也可以匿名宣告,通常用作函式引數。一個常見的例子是 List 物件的 sort 方法。此方法採用帶有以下簽名的可選引數:

int compare(E a, E b)

文件說明如果 ab 相等,函式必須返回 0。如果 a < b 則返回 -1,如果 a > b 則返回 1

知道這一點,我們可以使用匿名函式對整數列表進行排序。

List<int> numbers = [4,1,3,5,7];

numbers.sort((int a, int b) {
   if(a == b) {
      return 0;
   } else if (a < b) {
      return -1;
   } else {
      return 1;
   }
});

匿名函式也可以繫結到識別符號,如下所示:

Function intSorter = (int a, int b) {
   if(a == b) {
      return 0;
   } else if (a < b) {
      return -1;
   } else {
      return 1;
   }
}

並用作普通變數。

numbers.sort(intSorter);