2017-08-21 4 views
1

J'ai le code ci-dessous, qui fonctionne dans swift 2.3. Je me bats pour comprendre comment convertir en rapide 3/4 - la question, il est ceux que je suis Value of type 'Range<Int>' has no member 'map'Comment utiliser range.map dans swift 3/4?

let grainSize = CGFloat(0.01) 
     let min = CGFloat(-3) 
     let max = CGFloat(3) 
     let range = Range<Int>(uncheckedBounds: (lower: Int(min/grainSize), upper: Int(max/grainSize))) 
     let lol = NSRange(range) 

     var points = range.map { step -> CGPoint in 
      let i = grainSize * CGFloat(step) 
      let x = x_base + (i * controller.width/4.0) 
      let y = y_base + (m * equation(i)) 
      if x_init == CGFloat.max { x_init = x } 
      return CGPointMake(x, y) 
     } 
     points.append(CGPointMake(x_init, y_base)) 
     points.forEach { renderer.lineTo($0) } 

demandais si quelqu'un peut me diriger dans la bonne direction pour cela - même à la documentation à ce sujet, comme je ne trouve rien à ce sujet dans docs de pommes soit = ​​[

+0

Comparez https://oleb.net/blog/2016/09/swift-3-gammes /. –

Répondre

2

Range ne reprend pas Sequence, il suffit de créer la gamme littéralement CountableClosedRange

let range = Int(min/grainSize)...Int(max/grainSize) 
+0

Ce 100% travaillé. Merci beaucoup. Pouvez-vous m'indiquer une sorte de documentation à ce sujet pour que je puisse comprendre un peu plus à ce sujet? – crashlog

+0

Je viens de lire la documentation de [Range] (https://developer.apple.com/documentation/swift/range) et [CountableClosedRange] (https://developer.apple.com/documentation/swift/countableclosedrange) – vadian

+1

(pas de plage nécessaire): 'var points = stride (from: min, through: max, par: grainSize) .map {i dans ...}' –