上一章Swift教程请查看:swift字典用法和操作
在本文中,你将通过示例学习有关函数、函数是什么、函数定义语法、调用函数、Swift中函数的类型的所有内容。
函数是什么?
函数是一组定义要执行的操作的语句,函数的主要用途是使代码可重用。
从技术上讲,你可以把一个函数想象成一台机器,机器执行特定的任务,请求输入,处理输入并返回输出。
函数的类型
由函数是预定义的还是由程序员创建的,可得出函数有两种类型:
- 库函数——已经在Swift框架中定义的函数。
- 用户定义函数——程序员自己创建的函数。
库函数
库函数是已经在Swift框架中定义的内置函数,这些功能是为了解决Swift中的常见问题,所以你不必自己解决它们。它们是简单的操作,如打印、查找最小值和最大值等。
你可以通过调用库函数来直接使用它。如果你想,你可以看到所有的功能在swift框架,只需写导入Swift,按Cmd并点击它,你将导航到一个新页面,搜索所有以func关键字开头的语句。
例1:库或内建函数
print("Hello, World!")
在上面的程序中,我们调用了一个在Swift框架中定义的内置打印函数,该函数用于在控制台中打印输出。
我们可以调用print()函数,因为Swift框架是自动导入到我们的项目的,否则,我们应该自己写import Swift来导入。
用户自定义函数
Swift也允许你定义自己的函数,创建自己的函数有助于编写代码来解决问题或执行Swift框架中没有的任务,你还可以在将来重用你的函数来执行类似的任务。
同样,函数也可以根据参数和返回语句进行分类,参见本系列文章Swift函数参数类型和返回类型。
定义一个函数
func function_name(args...) -> ReturnType {
//statements
return value
}
让我们简要地描述每个组件:
- func是创建函数必须编写的关键字
- function_name是一个函数的名称。你可以给它任何一个定义函数功能的名字。
- args…定义函数接受的输入。
- ->此操作符用于指示函数的返回类型。
- ReturnType定义可以从函数返回的值的类型。例如Int, String等。
- return关键字用于将程序的控制传递给函数调用,并从函数返回值。
- 即使没有指定return关键字,函数也会在执行最后一条语句后自动返回。
- value值表示从函数返回的实际数据。值类型必须与ReturnType匹配。
函数是如何工作的?
在上面的图中,function_name(args)语句使用参数值args调用/调用函数,然后离开当前代码段(即在它下面停止执行语句),并开始执行函数内部的第一行。
- 该程序转到一行代码func function_name(Args…),并接受函数调用function_name(Args)期间传递的Args值。
- 然后,程序执行在函数内部定义的语句statementsInsideFunction。
- 函数内部的语句按从上到下的顺序依次执行。
- 执行完最后一条语句后,程序离开函数,返回到从i开始的地方,也就是 function_name (args)。
- Let val =将函数返回的值存储在一个常量val中。
- 然后,执行语句statementsOutsideFunction。
例2:Swift中如何定义函数?
func greet(user:String) {
print("Good Morning! \(user)")
}
上图是一个函数定义,它由以下组件组成:
- 关键字func标记函数头的开始。
- 在程序中唯一标识和调用函数的函数名greet。
- (user:String)标记函数头的结尾,并接受String类型的参数。参见用参数定义函数的Swift函数参数类型和返回类型。
- 该函数由内部的print语句组成,在调用函数后执行。
调用一个函数
一旦创建了函数,就可以在程序中调用它来执行函数中声明的语句。要调用一个函数,你只需要在函数名后面加上(),然后将输入参数作为:
greet(user: "Isac")
例3:调用Swift中的函数
func greet(user:String) {
print("Good Morning! \(user)")
}
greet(user: "Isac")
在上面的代码中,greet(user:“Isac”)调用函数并传递类型为String的值Isac。然后,在函数内部执行print语句。
函数的返回语句
return关键字告诉程序离开函数并返回函数调用所在的行。
还可以使用return关键字传递值,其中值是变量或从函数返回的其他信息。
例3:带有return关键字的函数
func greet(user:String)-> String {
return "Good Morning! \(user)"
}
let greeting = greet(user: "Isac")
print("""
You have a new message
\(greeting)
""")
在上面的代码中,greet(user:“Isac”)调用函数并传递类型为String的Isac值。返回String类型的值并将程序传输给函数调用。
Let greeting =存储从函数返回的值。函数返回后,执行函数调用下面的print语句。
使用函数的注意事项
- 给出一个反映函数用途的函数名。
- 一个函数应该只完成一个任务,如果一个函数执行多个任务,则将其分解为多个函数。
- 试着提前考虑所有情况,将语句分组到一个函数中,使代码可重用和模块化。