【问题标题】: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 中实现相同的结果?

【问题讨论】:

    标签: pass-by-reference 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编写的呢?
    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 2015-03-13
    • 2020-04-23
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多