Swift(三) 函数

函数

func funcName(parameters) -> returnType

函数定义

无参数无返回值

1
2
3
4
func sayHello() {

print("hello")
}

多参函数

1
2
3
func sayHello(personName: String) {
print("\(personName) say hello")
}
1
2
3
4
5
6
7
8
//可变参数
func sayHello(names: String...)
{
for name in names
{
print("\(name) say hello")
}
}

参数名

函数参数都有一个外部参数名(external parameter name)和一个局部参数名(local parameter name)。

外部参数名用于在函数调用时标注传递给函数的参数,局部参数名在函数的实现内部使用。

一般情况下,第一个参数省略其外部参数名,第二个以及随后的参数使用其局部参数名作为外部参数名

  • 函数参数名称
1
2
3
4
5
6
7
func sayHello(personName: String, withFriend friend: String)
{
print("\(personName) say hello with friend \(friend)")
}

// 函数调用
sayHello("小明", withFriend: "小红")
  • 指定外部参数名称
1
2
3
4
func sayHello(to person: String, and anotherPerson: String) -> String {
print("Hello \(person) and \(anotherPerson)!")
}
sayHello(to: "Bill", and: "Ted")
  • 忽略外部参数名 用_替代一个明确的参数名
1
2
3
4
5
6
7
func sayHello(personName: String, _ friend: String)
{
print("\(personName) say hello with friend \(friend)")
}

// 函数调用
sayHello("小明", "小红")

默认参数值

1
2
3
4
5
func someFunction(parameterWithDefault: Int = 12) {

}
someFunction(6) // parameterWithDefault is 6
someFunction() // parameterWithDefault is 12

常量参数和变量参数

函数参数默认是常量。试图在函数体中更改参数值将会导致编译错误

1
2
3
4
5
// 如果不声明为变量参数 将不可修改参数值
func incrementor(var variable: Int) -> Int {

return ++variable
}

输入输出参数(In-Out Parameters)

1
2
3
4
5
6
7
8
9
10
11
12
13
var luckyNumber = 7

incrementor(luckyNumber) //8

luckyNumber // 7 说明var 只是在方法内部作用 不会影响输入的值

func incrementor(inout variable: Int) {
++variable
}

incrementor(&luckyNumber) //8

luckyNumber //8

函数类型

每个函数都有种特定的函数类型,由函数的参数类型和返回类型组成。

嵌套函数