Logo
Section 1 / 16

定义函数

让我们来讨论函数,并学习如何在 Dart 中定义我们自己的函数。

导入

定义函数

让我们来讨论函数,并学习如何在 Dart 中定义我们自己的函数。

编写你的第一个函数

在本章中,我们将学习用户自定义函数,并了解如何编写自己的函数。让我们直接进入一个非常基础的用户自定义函数示例。

注意:在本课程中,请忽略 驱动代码。

1void newPrint() { 2 print("函数已调用"); 3} 4 5// 驱动代码 6main() { 7 newPrint(); 8}

上述函数对我们来说并没有实际用途,因为它只是打印出 函数已调用 这条信息。然而,无论函数具体做什么,它都遵循一个通用的语法结构。

代码说明

  • void 表示该函数不返回任何值。还记得我们之前讨论集合中的 contains 方法吗?contains 返回的是布尔值。如果你的函数需要返回某个值,这里就应该填写其返回类型,例如 int、String、bool 等。

虽然不强制要求指定返回类型,因为 Dart 可以通过类型推断自动判断函数的返回类型,但建议显式写出返回类型。

  • newPrint 是函数的名称,你可以自行命名。请确保名称能清晰表达函数的功能。

  • newPrint 后面跟着 ()。

  • 函数体被大括号 {} 包裹。

  • print("函数已调用"); 是函数的执行内容。

通用语法如下:

1returnType functionName() { 2 函数体 3}

如果函数有返回值,必须使用 return 关键字来返回结果,这一点我们将在下一节中看到。

带参数的函数

我们可以创建接收值的函数,就像方法一样。
参数是一种向函数传递值的机制。
让我们创建一个接受两个参数并返回它们之和的函数。

1num sum(num x, num y) { 2 return x + y; 3} 4 5// 驱动代码 6main() { 7 print(sum(1, 2)); 8}

在第一个例子中,函数名后跟的是空括号 ()。而这次括号内包含了要传入函数的参数。

在 第2行,(num x, num y) 表示该函数接收两个参数。第一个参数名为 x,类型为 num;第二个参数名为 y,同样为 num 类型。

在 第3行,我们使用 return 关键字返回 x + y 的结果。

1returnType functionName(parameters) { 2 函数体 3} 4// 可以有多个参数 5// 参数格式为:dataType parameterName

参数之间用逗号 , 分隔。

函数的返回值类型必须与声明的返回类型一致。例如,如果函数返回类型是 String,那么函数必须返回一个字符串值。

语法糖

正如我们已经提到的,函数体通常用大括号 {} 包裹。但如果函数体只包含一个表达式,你可以省略大括号,将整个函数写成一行。

这种简写语法略有不同:

1returnType functionName(parameter) => function body

使用这种语法时,无需使用 return 关键字来返回值。箭头符号 => 用于分隔函数参数和函数体。
这种方式只是语法上的简化,不会改变函数的功能,仅改变了书写形式。

让我们用这种简写方式重写 sum 函数:

1num sum(num x, num y) => x + y; 2 3// 驱动代码 4main() { 5 print(sum(1, 2)); 6}

main() 函数在哪里?

到目前为止,我们所有的代码都写在了 main() 函数中。用户自定义的函数不需要定义在 main() 函数内部,但也可以放在其中。不过,这些函数必须在 main() 函数中被调用。我们将在下一课中进一步探讨这一点。

控制流语句

调用函数