Swift是否有像"ref"关键字那样强制参数通过引用传递?

Max*_*kov 52 pass-by-reference swift

在Swift中,结构和值类型默认按值传递,就像在C#中一样.但是C#还有一个非常有用的ref关键字,它强制参数通过引用传递,这样可以在函数内部更改同一个实例,然后从调用者的范围访问.有没有办法在Swift中实现相同的结果?

ric*_*ter 88

使用inout限定符作为函数参数.

func swapTwoInts(a: inout Int, b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}

swapTwoInts(&someInt, &anotherInt)
Run Code Online (Sandbox Code Playgroud)

请参阅文档中的函数参数和返回值.

  • @tracicot这不一样.`var`用于在本地方法范围中拥有一个可变对象 - `inout`用于从该方法改变其自身范围内的对象.小心. (4认同)