Swift心得笔记之函数

2020-01-08 22:50:29丽君

常量和变量参数

默认参数是常量,无法在函数体中改变参数值。我们可以 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 中的例子来演示泛型参数类型的使用: