【发布时间】:2014-07-23 03:12:04
【问题描述】:
在 Swift 中,结构和值类型默认按值传递,就像在 C# 中一样。但是 C# 也有一个非常有用的 ref 关键字,它强制参数通过引用传递,以便可以在函数内部更改同一个实例,然后从调用者的范围访问。有没有办法在 Swift 中实现相同的结果?
【问题讨论】:
在 Swift 中,结构和值类型默认按值传递,就像在 C# 中一样。但是 C# 也有一个非常有用的 ref 关键字,它强制参数通过引用传递,以便可以在函数内部更改同一个实例,然后从调用者的范围访问。有没有办法在 Swift 中实现相同的结果?
【问题讨论】:
对函数参数使用inout 限定符。
func swapTwoInts(a: inout Int, b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
swapTwoInts(&someInt, &anotherInt)
【讨论】:
inout 限定符,例如:func swapTwoInts(a: inout Int, b: inout Int)
var 用于在本地方法范围内拥有一个可变对象 - inout 用于在其自身范围内从方法中改变对象。小心。