2016-06-20 15 views
5

Swift 2sovraccarichi per '...' esistono con questi tipi di risultato: ClosedRange <Bound>, CountableClosedRange <Bound>

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

mancante etichetta argomento 'intervallo:' a chiamata

Swift 3 - nuovo errore

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

No '...' candidati producono il tipo di risultato atteso contestuale 'Gamma'

sovraccarichi per '...' esistere con questi tipi di risultato: ClosedRange, CountableClosedRange

risposta

7

Come di Swift 3, ..< e ... produrre diversi tipi di intervalli:

  • ..< produce un Range (o CountableRange, a seconda del tipo sottostante) che descrive un intervallo semiaperto che non include il limite superiore.
  • ... produce un ClosedRange (o CountableClosedRange) che descrive un intervallo chiuso che include il limite superiore.

Se il randomInRange() calcola un numero casuale nell'intervallo dato, compreso il limite superiore, allora dovrebbe essere definito come

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

e si può chiamare come

let lo = 1 
let hi = 10 
let r = randomInRange(range: lo ... hi) 
Problemi correlati