【问题标题】:'var' parameters are deprecated and will be removed in Swift 3 UIimage Gif [duplicate]'var' 参数已被弃用,并将在 Swift 3 UIimage Gif 中删除 [重复]
【发布时间】:2016-03-24 03:29:07
【问题描述】:

我刚刚将 Xcode 更新到 7.3,现在我收到了这个警告:

'var' 参数已弃用,将在 Swift 3 中删除

我需要在这个函数中使用 var:

class func gcdForPair(var a: Int?, var _ b: Int?) -> Int {
    // Check if one of them is nil
    if b == nil || a == nil {
        if b != nil {
            return b!
        } else if a != nil {
            return a!
        } else {
            return 0
        }
    }

    // Swap for modulo
    if a < b {
        let c = a
        a = b
        b = c
    }

    // Get greatest common divisor
    var rest: Int
    while true {
        rest = a! % b!

        if rest == 0 {
            return b! // Found it
        } else {
            a = b
            b = rest
        }
    }
}

【问题讨论】:

    标签: swift swift3


    【解决方案1】:

    更新:我改写了我的答案,因为我认为你实际上想要inout,但你不想要。所以……

    动机可以在here找到。 tl;dr 是:var 与 inout 混淆了,它不会增加太多价值,所以去掉它。

    因此:

    func myFunc(var a: Int) {
        ....
    }
    

    变成:

    func myFunc(a: Int) {
        var a = a
        ....
    }
    

    因此您的代码将变为:

    class func gcdForPair(a: Int?, _ b: Int?) -> Int {
        var a = a
        var b = b
        // Check if one of them is nil
        if b == nil || a == nil {
            if b != nil {
                return b!
            } else if a != nil {
                return a!
            } else {
                return 0
            }
        }
    
        // Swap for modulo
        if a < b {
            let c = a
            a = b
            b = c
        }
    
        // Get greatest common divisor
        var rest: Int
        while true {
            rest = a! % b!
    
            if rest == 0 {
                return b! // Found it
            } else {
                a = b
                b = rest
            }
        }
    }
    

    【讨论】:

    • 我试过了,但同样的问题i.imgur.com/WSggY1Z.png
    • 至少你修复了我使用let 而不是var 的大脑冻结问题。但是,函数定义中没有 a:。这就是导致您现在问题的原因吗?
    • 不,它在那里,但问题是修复告诉我删除它! ,并且函数 oO 中没有 var
    • 这在 IBM 的沙箱中为我工作(我在这台机器上没有 XCode)。也许尝试做一个清洁并重新启动 XCode?顺便说一句,您可以将第一个if中的代码缩短为return a ?? b ?? 0。
    • 我写了一个shorter implementation。 (Bluemix 在 Safari 中可能无法正常工作。)
    猜你喜欢
    • 2023-03-25
    • 2016-07-10
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多