可以使用“…”来表示可变数量参数
在定义函数时,如果不确定参数数量,可以使用“…”的方式来表示可变参数。
- 如果函数有多个参数时,可变参数需放在最后
- 可变参数后不可再加其他参数。
- 一个函数最多只能够有一个可变参数
- 可变参数内的值虽然数量不定,但必须都为同一类型的参数(可视为数组)
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中一个函数内部可以嵌套的定义另一个函数,但是函数内部定义的函数只能在该函数内部使用,在函数外不能使用。
来源:CSDN
作者:lixiang0125
链接:https://blog.csdn.net/qq1032913799/article/details/103855804