swift convert Rango <Int> a

cómo convertir Range a Array

Lo intenté:

let min = 50 let max = 100 let intArray:[Int] = (min...max) 

get el Range<Int> is not convertible to [Int] error Range<Int> is not convertible to [Int]

También probé:

 let intArray:[Int] = [min...max] 

y

 let intArray:[Int] = (min...max) as [Int] 

Tampoco funcionan.

Necesita crear un Array<Int> usando el Range<Int> lugar de lanzarlo .

 let intArray: [Int] = Array(min...max) 

Coloque el range en el init.

 let intArray = [Int](min...max) 

hacer:

 let intArray = Array(min...max) 

Esto debería funcionar porque Array tiene un inicializador que toma un SequenceType y Range ajusta a SequenceType .

Me lo imaginé:

 let intArray = [Int](min...max) 

Dando crédito a otra persona.

Usar map

 let min = 50 let max = 100 let intArray = (min...max).map{$0} 

Es interesante que no pueda (al less, con Swift 3 y Xcode 8) utilizar el object Range<Int> directamente:

 let range: Range<Int> = 1...10 let array: [Int] = Array(range) // Error: "doesn't conform to expected type 'Sequence'" 

Por lo tanto, como se mencionó anteriormente, debe "desenvolver" manualmente su range como:

 let array: [Int] = Array(range.lowerBound...range.upperBound) 

Es decir, puedes usar literalmente.

Como Swift 3 / Xcode 8 hay un tipo CountableRange , que puede ser útil:

 let range: CountableRange<Int> = -10..<10 let array = Array(range) print(array) // prints: // [-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

Se puede usar directamente en forin loops:

 for i in range { print(i) }