Swift - 嵌套函数
函数是一组语句的代码块,用于执行特定任务。当一个函数定义在另一个函数内部时,这种函数被称为嵌套函数。嵌套函数的作用域仅限于定义它们的外部函数,即只能从外部函数内部访问它们。如果尝试在外部函数外部访问它们,将会报错。
在 Swift 中,一个函数可以包含多个嵌套函数,并且它们必须在使用前定义。
嵌套函数通过将复杂任务分解为更小、可重用的组件来提高代码可读性并组织代码。
嵌套函数将逻辑封装在有限的作用域内,并可以防止外部访问。
它们只能访问外部函数中的变量。
嵌套函数的语法
以下是嵌套函数的语法 −
func outerFunction(){
func nestedFunction(){
// code
}
func nestedFunction2(){
//code
}
nestedFunction1()
nestedFunction2()
}
Swift 中无参数的嵌套函数
在 Swift 中,我们可以定义一个不带任何参数的嵌套函数。此类函数在调用时不接受任何参数,并且可能返回或不返回任何值。
语法
以下是无参数列表的嵌套函数语法 −
func nestedFunction(){
// Code
}
示例
使用嵌套函数显示世界杯获胜者名称的 Swift 程序。
import Foundation
// 外部函数
func worldCupTrophy(){
// 无参数列表的嵌套函数
func winnerName() {
print("Winner of World Cup is INDIA")
}
// 调用嵌套函数
winnerName()
}
// 调用外部函数以显示结果
worldCupTrophy()
输出
它将产生以下输出 −
Winner of World Cup is INDIA
Swift 中带参数的嵌套函数
嵌套函数可以包含参数列表但没有返回类型。此类嵌套函数只能访问外部函数的变量和参数。嵌套函数可以包含多个参数,它们通过参数标签分隔。
语法
以下是带参数的嵌套函数语法 −
func nestedFunction(name1: Int, name2: Int){
// code
}
示例
使用嵌套函数连接两个字符串的 Swift 程序。
import Foundation
// 外部函数
func concatenateStrings(str1: String, str2: String){
// 带参数列表的嵌套函数
func displayResult(finalStr: String) {
print("Concatenated String: \(finalStr)")
}
let result = str1 + str2
// 调用嵌套函数
displayResult(finalStr: result)
}
// 输入字符串
var string1 = "Welcome "
var string2 = ""
// 调用外部函数以显示结果
concatenateStrings(str1: string1, str2: string2)
输出
它将产生以下输出 −
Concatenated String: Welcome
Swift 中无返回类型的嵌套函数
无返回类型的嵌套函数不返回任何值。它可能包含或不包含参数。
语法
以下是无返回类型的嵌套函数语法 −
func nestedFunction(name: Int){
// code
return
}
示例
使用嵌套函数计算矩形面积的 Swift 程序。
import Foundation
// 外部函数
func Rectangle(length: Int, width: Int){
// 无返回类型的嵌套函数
func displayArea(finalArea: Int) {
print("Area of Rectangle: \(finalArea)")
}
let result = length * width
// 调用嵌套函数
displayArea(finalArea: result)
}
// 输入值
var l = 10
var w = 12
// 调用外部函数以显示结果
Rectangle(length: l, width: w)
输出
它将产生以下输出 −
Area of Rectangle: 120
Swift 中具有返回类型的嵌套函数
嵌套函数可以包含参数列表而无需任何返回类型。具有返回类型的嵌套函数总是会返回某些值。
语法
以下是具有返回类型的嵌套函数的语法 −
func nestedFunction(name1: Int, name2: Int) -> ReturnType{
// code
return
}
示例
使用嵌套函数计算两个图形(矩形和正方形)的面积总和的 Swift 程序。
import Foundation
// 无返回类型的外部函数
func Areas(length: Int, width: Int){
// 具有返回类型的嵌套函数
func sumOfAreas(area1: Int, area2: Int)-> Int {
let Sum = area1 + area2
return Sum
}
let areaOfRectangle = length * width
let areaOfSquare = length * length
// 调用嵌套函数
print("Total Area: \(sumOfAreas(area1: areaOfRectangle, area2: areaOfSquare))")
}
// 调用外部函数以显示结果
Areas(length: 23, width: 25)
输出
它将产生以下输出 −
Total Area: 1104