📅  最后修改于: 2023-12-03 14:47:47.830000             🧑  作者: Mango
在 Swift 编程语言中,函数是一等公民。即其与其他对象(如变量)拥有同等的地位和权利。Swift 中的函数具有无与伦比的灵活性和强大的功能,可以满足各种编程需求。
函数定义的一般形式如下:
func functionName(parameter: ParameterType) -> ReturnType {
// Function body
return someValue
}
其中:
func
:关键字,代表函数定义functionName
:函数名,可以由字母、数字和下划线组成,但不能以数字开头parameter
:可选的参数列表,用括号包围,参数名在前,冒号和类型在后ReturnType
:返回值类型,用箭头指示Function body
:函数体,表示在函数被调用时将要执行的操作return
:返回语句,告诉函数返回何种类型的值例如,下面是一个简单的函数定义:
func hello(name: String) -> String {
return "Hello, \(name)!"
}
该函数使用字符串参数 name
,并返回一个带有问候语的字符串。
调用函数时,使用函数名和传递给函数的参数。例如,要使用前面定义的 hello
函数,可以像这样调用它:
let message = hello(name: "John")
print(message) // 输出 "Hello, John!"
当调用带有多个参数的函数时,参数名可以被省略。例如:
func multiply(_ a: Int, by b: Int) -> Int {
return a * b
}
let result = multiply(5, by: 7)
print(result) // 输出 "35"
在这个例子中,第一个参数 a
被删除了下划线,并且第二个参数 b
被保留用于表示其含义。
在 Swift 中,函数可以使用可变参数,其数量不确定。例如,需要一个函数来计算指定数字的平均值。在传递数字的数量时,您可以使用可变参数。例如:
func average(numbers: Double...) -> Double {
var total = 0.0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
let avg = average(numbers: 1, 2, 3, 4)
print(avg) // 输出 "2.5"
在上面的示例中,numbers
参数被定义为 Double...
,这意味着它可以接受任意数量的 Double
类型参数。在函数体中,所有传递的数字都可以使用 for-in
循环计算它们的总和。最终平均数是通过将总和除以数字的数量来构建并返回的。
在 Swift 中,函数可以被内嵌在另一个函数内。这可以使代码更模块化,更清晰。例如,以下是一个简单函数,它将接受一些数字,并返回一个新数组,其中所有数字都是排序的:
func sortNumbers(numbers: [Int]) -> [Int] {
func sortAscending(_ i: Int, _ j: Int) -> Bool {
return i < j
}
return numbers.sorted(by: sortAscending)
}
let unsortedNumbers = [2, 5, 4, 6, 3, 1]
let sortedNumbers = sortNumbers(numbers: unsortedNumbers)
print(sortedNumbers) // 输出 "[1, 2, 3, 4, 5, 6]"
在这个例子中,sortAscending
函数被内嵌在 sortNumbers
函数内,以便对传递的数组进行排序。它在 sorted
函数中使用,以指示数组的排序方式。
Swift 中的函数还有其他一些高级特性和概念,这里只介绍了一部分。要了解更多信息,请查阅官方 Swift 文档。