Dart:十二、函數(shù)

函數(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)的所有的變量。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容