2016-06-20 3 views
5

Swift 2Überlastungen für '...' existiert mit diesen Ergebnistypen: ClosedRange <Bound>, CountableClosedRange <Bound>

let gap = CGFloat(randomInRange(StackGapMinWidth...maxGap)) 

fehlt Argument label 'Bereich:' in Call

Swift 3 - neuer Fehler

let gap = CGFloat(randomInRange(range: StackGapMinWidth...maxGap)) 

No '...' Kandidaten produzieren das Kontextergebnistyp erwartet 'Range'

Überlastungen für '...' existiert mit diesen Ergebnistypen: ClosedRange, CountableClosedRange

Antwort

7

Ab Swift 3, ..<... und produzieren verschiedene Arten von Bereichen:

  • ..< erzeugt ein Range (oder CountableRange, abhängig vom zugrunde liegenden Typ), der einen halboffenen Bereich beschreibt, der die obere Grenze nicht enthält.
  • ... erzeugt eine ClosedRange (oder CountableClosedRange), die einen geschlossenen Bereich beschreibt, der die obere Grenze enthält.

Wenn die randomInRange() im angegebenen Bereich eine Zufallszahl berechnet, einschließlich der oberen Grenze, dann sollte es als

func randomInRange(range: ClosedRange<Int>) -> Int { 
    // ... 
} 

definiert werden, und Sie können es als

let lo = 1 
let hi = 10 
let r = randomInRange(range: lo ... hi) 
nennen
Verwandte Themen