功能范围
Dart 函数也可以匿名声明或嵌套声明。例如,要创建嵌套函数,只需在现有功能块中打开一个新功能块
void outerFunction() {
bool innerFunction() {
/// Does stuff
}
}
函数 innerFunction
现在可以在 outerFunction
内部使用,也可以仅在内部使用。没有其他其他功能可以访问它。
Dart 中的函数也可以匿名声明,通常用作函数参数。一个常见的例子是 List
对象的 sort
方法。此方法采用带有以下签名的可选参数:
int compare(E a, E b)
文档说明如果 a
和 b
相等,函数必须返回 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);