一尘不染

什么时候使用inout参数?

swift

将类或原始类型传递给函数时,函数对参数的任何更改都将反映在类外部。这基本上是inout参数应该做的事情。

什么是inout参数的好用例?


阅读 257

收藏
2020-07-07

共1个答案

一尘不染

inout意味着修改局部变量还将修改传入的参数。没有它,传入的参数将保持相同的值。尝试在使用引用类型时考虑引用类型,而在inout不使用引用类型时考虑值类型。

例如:

import UIKit

var num1: Int = 1
var char1: Character = "a"

func changeNumber(var num: Int) {
    num = 2
    print(num) // 2
    print(num1) // 1
}
changeNumber(num1)

func changeChar(inout char: Character) {
    char = "b"
    print(char) // b
    print(char1) // b
}
changeChar(&char1)

一个好的用例是swap它将修改传入的参数的函数。

Swift 3+注从Swift 3开始inout关键字必须 冒号之后和类型之前。例如,Swift 3+现在需要func changeChar(char: inout Character)

2020-07-07