📜  Dart – 函数(1)

📅  最后修改于: 2023-12-03 14:40:36.754000             🧑  作者: Mango

Dart - 函数

函数是一种可重用代码块,并且能够执行特定任务或计算结果。在 Dart 中,函数是一等公民,意味着可以将函数分配给变量、传递函数作为参数,并从函数中返回函数。

定义函数

Dart 中的函数定义如下所示:

返回类型 函数名(参数类型 参数名, ...) {
   函数体
}

其中,返回类型 表示函数返回的值类型,如果没有返回值则使用关键字 void函数名 是函数的名称;参数类型参数名 表示函数的输入参数。

例如,下面的代码定义了一个不带参数的函数,该函数返回一个字符串:

String greet() {
  return "Hello, world!";
}

可以使用 null 关键字来表示不返回任何值的函数。以下是一个示例,其中函数不返回任何值:

void printMessage(String message) {
  print(message);
}
调用函数

在 Dart 中,用函数名调用函数即可执行函数体中的代码。例如,要调用上面定义的函数 greet(),请在代码中使用以下代码行:

print(greet());

将会输出以下内容:

Hello, world!

要调用另一个函数,例如 printMessage(),请使用以下代码行:

printMessage("Hello, world!");

将会输出以下内容:

Hello, world!
匿名函数

Dart 也支持定义匿名函数。匿名函数可以在必要时被直接声明和调用,而不必将其赋值给变量或传递给函数。

以下是一个使用匿名函数定义的示例,该函数打印并返回给定字符串的大写版本:

() {
  String message = "Hello, world!";
  print(message.toUpperCase());
  return message.toUpperCase();
}()
函数作为参数

在 Dart 中,函数也可以被传递给其他函数作为参数。例如,下面的代码定义了一个接受函数作为参数的 process 函数:

void process(String message, Function processFunction) {
  print(processFunction(message));
}

可以将 greet() 函数传递给 process 函数,如下所示:

process(greet(), (String message) => message.toLowerCase());

将会输出以下内容:

hello, world!
函数作为返回值

在 Dart 中,函数也可以返回其他函数。例如,下面的代码定义了一个返回函数的 createFunction 函数:

Function createFunction() {
  return () {
    print("Hello, world!");
  };
}

可以使用以下代码行返回该函数,并将其分配给变量 myFunction

Function myFunction = createFunction();

可以使用以下代码行调用 myFunction() 函数:

myFunction();

将会输出以下内容:

Hello, world!
总结

在 Dart 中,函数是一等公民,可以将它们分配给变量、传递函数作为参数,并从函数中返回函数。函数是可重用代码块,并且能够执行特定任务或计算结果。您可以定义具有参数的函数,也可以定义不返回任何值的函数。如果要使用匿名函数,请将其直接声明和调用。