Flutter function

 · 1 min read

函式(Function)

Dart對函式處理很靈活,允許將其它數據類型一樣進行賦值、傳遞和返回,大幅強化其表達能力和靈活性。

函式宣告

int add(int a, int b) {
  return a + b;
}
// 也可用箭頭函式跟JS一樣
int multiply(int a, int b) => a * b;

可選參數

Dart支持可選的位置參數和命名參數,就是不一定要滿足全部函式所需的參數,可選擇性的填寫:

// 可選的位置參數
String great (String name, [String? greeting]) {
  greeting ??= 'HIIII';   // 如果greeting為null,使用預設值
  return '$greeting, $name!';
}

// 可選的命名參數,在使用上必須填上參數名稱
void printPerson({required String name, int? age}) {
  print('Name: $name');
  if (age != null) {
    print('Age: $age');
  }
}

// 使用
print(greet('Mike'));  // 輸出: HIIII, Mike!
print(greet('Mike', 'Hi'));  // 輸出: HI, Mike!
printPerson(name: 'Easy'); // 輸出: Name: Easy
printPerson(name: 'Easyfun0', age: 30); //輸出: Name: Easyfun0 和 Age: 30

函式作為變數傳遞

變數通常只用來儲存數據(例如整數、字串等),在Dart中,函式也可被視為一個「值」,並可像數據一樣傳遞。也意味著可將函式作為參數傳遞給其他函式,甚至可以將函數賦值給變數,靈活地控制程式碼執行流程。

var sayHello = (String name) => 'Hello, $name!';
print(sayHello('Mike')); // 輸出: Hello, Mike!