函数
函数是一段完成特定任务的独立代码片段。每个函数都有一个由函数的参数值类型和返回值类型组成的类型。
函数的定义与调用
func test1(){
print("------test1------")
}
test1();
// 打印“------test1------”
函数的参数
- 无参数有返回值
func test2() ->Int{
return 10
}
print("----test2-----\(test2())")
//打印“----test2-----10”
- 带参数有返回值
func test3(name:String) ->String{
return name
}
print("------test3------\(test3(name:"Willem"))")
//打印“----test3-----Willem”
- 多个返回值函数
//定义了一个名为minMax(_:)的函数,作用是在一个Int数组中找出最小值与最大值。
import Cocoa
func minMax(array: [Int]) -> (min: Int, max: Int) {
var currentMin = array[0]
var currentMax = array[0]
for value in array[1..<array.count] {
if value < currentMin {
currentMin = value
} else if value > currentMax {
currentMax = value
}
}
return (currentMin, currentMax)
}
let bounds = minMax([8, -6, 2, 109, 3, 71])
print("最小值为 (bounds.min) ,最大值为 (bounds.max)")
//打印“最小值为 -6 ,最大值为 109”
函数参数名称
函数参数都有一个外部参数名和一个局部参数名。
func test6(outname inname:String){
//outname : 函数实际参数标签(外部名称) inname:形式参数(内部名称)
print("------test6------")
print("inname = \(inname)")
}
- 可变参数
//可变参数可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数,其数量是不确定的。
//可变参数通过在变量类型名后面加入(...)的方式来定义。
import Cocoa
func test7<N>(members: N...){
for i in members {
print(i)
}
}
test7(4,3,5)
test7(4.5, 3.1, 5.6)
test7("A", "B", "C")
一般默认的参数传递都是传值调用的,而不是传引用。所以传入的参数在函数内改变,并不影响原来的那个参数。传入的只是这个参数的副本。
当传入的参数作为输入输出参数时,需要在参数名前加&符号,表示这个值可以被函数修改。
func swapTwoInts(_a: inout Int, _b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
var x = 1
var y = 5
swapTwoInts(&X, &y)
print("x 现在的值(x),y 现在的值(y)")