стремительные преобразования диапазона [Инт]
как преобразовать диапазон в массив
пробовал:
let min = 50
let max = 100
let intArray:[Int] = (min...max)
получаю ошибку Range<Int> is not convertible to [Int]
Я тоже пробовал:
let intArray:[Int] = [min...max]
и
let intArray:[Int] = (min...max) as [Int]
они не работают.
7 ответов:
вам нужно создать an
Array<Int>С помощьюRange<Int>, а не casting его.let intArray: [Int] = Array(min...max)
do:
let intArray = Array(min...max)Это должно работать, потому что
Arrayимеет инициализатор, принимающийSequenceTypeиRangeсоответствуетSequenceType.
интересно, что вы не можете (по крайней мере, с Swift 3 и Xcode 8) использовать
Range<Int>объект:let range: Range<Int> = 1...10 let array: [Int] = Array(range) // Error: "doesn't conform to expected type 'Sequence'"поэтому, как уже упоминалось ранее, вам нужно вручную "развернуть" диапазон, например:
let array: [Int] = Array(range.lowerBound...range.upperBound)то есть, ты можете использовать только буквальное.
так как Swift 3 / Xcode 8 есть
CountableRangeтип, который может пригодиться: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]его можно использовать сразу в
for-inпетли:for i in range { print(i) }
Comments