函數(shù)
定義
int add(int x) {
return x + 1;
}
調(diào)用
add(1);
可選參數(shù)
int add(int x, [int? y, int? z]) {
if (y == null) {
y = 1;
}
if (z == null) {
z = 1;
}
return x + y + z;
}
調(diào)用
add(1, 2);
可選參數(shù) 默認值
int add(int x, [int y = 1, int z = 2]) {
return x + y;
}
調(diào)用
int(1, 2);
命名參數(shù) 默認值
int add({int x = 1, int y = 1, int z = 1}) {
return x + y + z;
}
調(diào)用
int(x: 1, y: 2);
函數(shù)內(nèi)定義
void main(){
int add(int x){
return x + x;
}
print(add(1));
}
Funcation 返回函數(shù)對象
Function makeAdd(int x) {
return (int y) => x + y;
}
調(diào)用
var add = makeAdd(1);
print(add(5));
匿名函數(shù)
下面代碼定義了只有一個參數(shù) item 且沒有參數(shù)類型的匿名方法。 List 中的每個元素都會調(diào)用這個函數(shù),打印元素位置和值的字符串:
const list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {
print('${list.indexOf(item)}: $item');
});
箭頭函數(shù) 如果只有一個表達式
list.forEach((item) => print('${list.indexOf(item)}: $item'));
作用域
下面是一個嵌套函數(shù)中變量在多個作用域中的示例:
bool topLevel = true;
void main() {
var insideMain = true;
void myFunction() {
var insideFunction = true;
void nestedFunction() {
var insideNestedFunction = true;
assert(topLevel);
assert(insideMain);
assert(insideFunction);
assert(insideNestedFunction);
}
}
}
注意 nestedFunction() 函數(shù)可以訪問包括頂層變量在內(nèi)的所有的變量。