Swift中函数

别来无恙 提交于 2020-01-06 17:13:41

可以使用“…”来表示可变数量参数

在定义函数时,如果不确定参数数量,可以使用“…”的方式来表示可变参数。

  • 如果函数有多个参数时,可变参数需放在最后
  • 可变参数后不可再加其他参数。
  • 一个函数最多只能够有一个可变参数
  • 可变参数内的值虽然数量不定,但必须都为同一类型的参数(可视为数组)
func countNumbers(numbers: Int...) -> Int
{
    if numbers.count == 0 {
        return 0
    }
    var total:Int = 0
    for _ in numbers {
        total += 1
    }
    return total
}


let number = countNumbers(numbers: 3,5,6)
print(number) //3

同时上述代码的功能和定义参数numbers为一个Int型数组相同。

函数可以作为函数的参数

在Swift中一个函数的参数可以是一个函数,只需要标明该函数的参数类型和返回值类型。而在调用该函数时,可以将符合对应参数类型和返回值类型的函数作为参数传入。

func addNumbers(number1: Int, number2:Int) -> Int
{
    return number1 + number2
}

func subtractNumbers(number1: Int, number2:Int) -> Int
{
    return number1 - number2
}

func printCalculateResult(calculate: (Int,Int)->Int, number1:Int, number2:Int)
{
    print(calculate(number1,number2))
}


printCalculateResult(calculate: addNumbers(number1:number2:), number1: 5, number2: 13)//18
printCalculateResult(calculate: subtractNumbers(number1:number2:), number1: 5, number2:13)//-8
//addNumbers和subtractNumbers的参数部分可省略,结果相同
printCalculateResult(calculate: addNumbers, number1: 5, number2: 13)
printCalculateResult(calculate: subtractNumbers, number1: 5, number2:13)

函数可以作为函数的返回类型

可以将函数设置为函数的返回类型,和作为参数时相同,在定义时只需要规定返回的函数的参数类型和返回值类型。在函数内部返回符合该类型的函数。
在调用该函数时,讲该函数赋给一个常量,随后根据函数的返回值来决定该常量所具备的函数性质。

func addNumbers(number1: Int, number2:Int) -> Int
{
    return number1 + number2
}

func subtractNumbers(number1: Int, number2:Int) -> Int
{
    return number1 - number2
}

func selectAddOrSubtract(addOrMinus: String) -> (Int,Int)->Int
{
    if addOrMinus == "add" {
        return addNumbers(number1:number2:)//可直接写作return addNumbers
    }
    else {
        return subtractNumbers(number1:number2:)//可直接写作return subtractnumbers
    }
}

let function = selectAddOrSubtract(addOrMinus: "add")
print(function(5,13))//18
let function2 = selectAddOrSubtract(addOrMinus: "minus")
print(function2(5,13))//-8

一个函数中可以设置多个返回值

在Swift中可以为一个函数设置多个返回值。在返回时会将多个返回值打包为一个元组,在调用后可以通过“.0”“.1”的方式来对返回的值进行调用,也可以直接通过名字进行调用

func getInformation() -> (name:String, age: Int, address: String)
{
    let name = "Sun"
    let age = 13
    let address = "XXXXX"
    return (name,age,address)
}

let person = getInformation()
print(person.0)
print(person.name)//和print(person.0)相同
print(person.1)
print(person.age)//和print(person.1)相同
print(person.2)
print(person.address)//和print(person.2)相同

函数中可以嵌套定义函数

在Swift中一个函数内部可以嵌套的定义另一个函数,但是函数内部定义的函数只能在该函数内部使用,在函数外不能使用。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!