常量和变量参数
默认参数是常量,无法在函数体中改变参数值。我们可以 var 一个新的值就行操作,也可以直接在函数定义中加上 var 避免在函数体中定义新的变量。
比如这一个右对齐函数:
复制代码
func alignRight(var string: String, count: Int, pad: Character) -> String {
let amountToPad = count - countElements(string)
if amountToPad < 1 {
return string
}
let padString = String(pad)
for _ in 1...amountToPad {
string = padString + string
}
return string
}
let originalString = "hello"
let paddedString = alignRight(originalString, 10, "-") // "-----hello"
输入输出参数 (inout)
在函数体中对变量参数进行的修改并不会改变参数值本身,比如看这个例子:
复制代码
func add(var v1:Int) -> Int {
return ++v1
}
var a = 1
add(a) // 2
a // 1
如果想通过函数修改原始值需要 inout ,但是这样是错误的:
复制代码
func add(inout v1:Int) -> Int {
return ++v1
}
var a = 1
add(a) // 2
a // 1
在传入的时候,需要加上 & 标记:
复制代码
func add(inout v1:Int) -> Int {
return ++v1
}
var a = 1
add(&a) // 2
a // 1
泛型参数类型
在此借用一下 objc.io 中的例子来演示泛型参数类型的使用:








