2016-03-24 6 views
3

Ich aktualisiere nur Xcode ich auf 7,3 und jetzt bekommen diese Warnung entfernt werden:‚var‘ Parameter sind veraltet und wird in Swift 3 UIImage Gif

‚var‘ Parameter sind veraltet und wird in Swift 3 entfernt werden

ich brauche die var in dieser Funktion zu verwenden:

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 
     } 
    } 
} 

Antwort

5

UPDATE: ich habe meine Antwort umformuliert, weil ich dachte, Sie wollten eigentlich inout, aber sie tun nicht . So ...

Die Motivation kann here gefunden werden. Der tl; dr ist: var wird mit inout verwechselt und es fügt nicht viel Wert hinzu, also werden Sie es los.

Deshalb:

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

Becomes:

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

Daher Code würde:

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 
     } 
    } 
} 
+0

ich versuche das, aber das gleiche Problem http: //i.imgur .com/WSggY1Z.png –

+0

Zumindest hast du mein Gehirn eingefroren, wo ich 'let' anstelle von' var' benutzt habe. Sie haben jedoch in der Funktionsdefinition nicht das 'a:'. Ist das, was Ihr Problem jetzt verursacht? – Michael

+0

nein es ist da, aber das Problem ist, dass die Lösung mir sagen, es zu löschen! , und es gibt keine var in Funktion oO –

Verwandte Themen