1.函数的定义与调用:
一个函数定义的基本语法如以下代码所示: func function_name (param1: Int, param2: Float, param3: Double) -> return_type { // function-body /* ... */ }
2.函数的实参标签:
3.默认形参值:
4.不定个数的形参:
/// 这里定义了一个带有不定参数个数的函数foo /// 这里不定个数的形参的类型为Int func foo(a: Int, b: Int...) { var sum = a // 判定传递过来的实参个数是否大于0 if b.count > 0 { for i in b { sum += i } } print("sum = (sum)") } // 不传任何不定个数形参所对应的实参 foo(a: 0) // 传了1个不定个数形参所对应的实参 foo(a: 0, b: 1) // 传了3个不定个数形参所对应的实参 foo(a: 0, b: 1, 2, 3)
5.输入输出形参:
“在调用函数时,我们在表示实参的表达式之前加上 & 单目前缀操作符,表示该实参将会在函数返回后被所对应的形参进行赋值。 单目前缀操作符 & 的操作数必须是一个变量,而不能是一个常量。”
摘录来自: “大话Swift 4.0”。 iBooks.
/// 这里定义了一个函数foo, /// 其第二个形参b为输入输出形参 func foo(a: Int, b: inout Int) { // 我们可以对输入输出形参b进行修改 // 但这里不能对形参a进行修改 b += a }
var x = 100 // 当foo函数返回之后, // 我们可以看到实参x的值也被修改了 foo(a: 10, b: &x) // 这里输出:x = 110 print("x = (x)")
6.函数重载:
“如果在同一作用域及名字空间中出现一组相同名字的函数,这些函数具有不同的形参类型或形参个数,或是带有不同的返回类型,那么称这组函数为重载函数(overloaded functions)。”
摘录来自: “大话Swift 4.0”。 iBooks.
7.函数类型与函数签名:
// 这里foo的类型为() -> Void func foo() { print("foo void") } // 这里foo的类型为(Int) -> Void func foo(_ a: Int) { print("foo Int") }
/// 函数foo的签名为:foo func foo() { print("foo") } /// 函数boo的签名为:boo(_:) func boo(_: Void) { print("boo") }
8.嵌套函数定义:
9.统一的函数引用体系: