将类或原始类型传递给函数时,函数对参数的任何更改都将反映在类外部。这基本上是inout参数应该做的事情。
inout
什么是inout参数的好用例?
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它将修改传入的参数的函数。
swap
Swift 3+注 :从Swift 3开始,inout关键字必须 在 冒号之后和类型之前。例如,Swift 3+现在需要func changeChar(char: inout Character)。
func changeChar(char: inout Character)