[ios] Range <Int>를 [Int]로 신속하게 변환

범위를 배열로 변환하는 방법

나는 시도했다 :

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] 

그들도 작동하지 않습니다.



답변

당신은 할 필요가 생성Array<Int> 사용 Range<Int>보다는 캐스트 를 보내고.

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


답변

범위를 초기화합니다.

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


답변

나는 그것을 알아:

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

다른 사람에게 신용을주기.


답변

하다:

let intArray = Array(min...max)

때문에이 작업을해야합니다 Array복용하는 이니셜 라이저가 SequenceTypeRange에 부합를 SequenceType.


답변

사용하다 map

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


답변

흥미롭게도 (적어도 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]

그것은에서 직접 사용할 수 있습니다 forin루프 :

for i in range {
    print(i)
}