2017-08-21 117 views
1

我有下面的代碼,它工作在swift 2.3。我努力理解如何將其轉換爲SWIFT 3/4 - 的問題,它是那些 Value of type 'Range<Int>' has no member 'map'如何在swift 3/4中使用range.map?

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

我想知道是否有人能指出我在這個正確的方向 - 即使文檔中有關這一點,因爲我無法找到關於它在蘋果文檔或者任何= [

+0

比較https://oleb.net/blog/2016/09 /迅速-3-範圍/。 –

回答

2

Range不採用Sequence,只是從字面上創建範圍爲CountableClosedRange

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

這100%工作。非常感謝。你能指點我一些關於這方面的文件,所以我可以更多地瞭解它嗎? – crashlog

+0

我剛剛閱讀[Range](https://developer.apple.com/documentation/swift/range)和[CountableClosedRange](https://developer.apple.com/documentation/swift/countableclosedrange) – vadian

+1

的文檔(不需要範圍):'var points = stride(from:min,through:max,by:grainSize).map {i in ...} –

相關問題