Swift 是不是有类似“ref”关键字的东西强制参数通过引用传递?
Posted
技术标签:
【中文标题】Swift 是不是有类似“ref”关键字的东西强制参数通过引用传递?【英文标题】:Does Swift have something like "ref" keyword that forces parameter to be passed by reference?Swift 是否有类似“ref”关键字的东西强制参数通过引用传递? 【发布时间】:2014-07-23 03:12:04 【问题描述】:在 Swift 中,结构和值类型默认按值传递,就像在 C# 中一样。但是 C# 也有一个非常有用的 ref 关键字,它强制参数通过引用传递,以便可以在函数内部更改同一个实例,然后从调用者的范围访问。有没有办法在 Swift 中实现相同的结果?
【问题讨论】:
【参考方案1】:对函数参数使用inout
限定符。
func swapTwoInts(a: inout Int, b: inout Int)
let temporaryA = a
a = b
b = temporaryA
swapTwoInts(&someInt, &anotherInt)
请参阅文档中的 Function Parameters and Return Values。
【讨论】:
不错。 'var' 在 Swift 3 中已弃用,但 'inout' 有效。 更新语法 - 我使用的是 Xcode 8.0,而当前的 Swift 3 只接受类型前的inout
限定符,例如:func swapTwoInts(a: inout Int, b: inout Int)
@tracicot 不一样。 var
用于在本地方法范围内拥有一个可变对象 - inout
用于在其自身范围内从方法中改变对象。小心。
如果方法是用Objective C编写的呢?以上是关于Swift 是不是有类似“ref”关键字的东西强制参数通过引用传递?的主要内容,如果未能解决你的问题,请参考以下文章