📜  Swift 函数(1)

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

Swift 函数

在 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 文档。