swift range 를 [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)
[ Range ]를 init에 넣습니다.
let intArray = [Int](min...max)
내가 알아냈어
let intArray = [Int](min...max)
다른 사람에게 공을 돌리는 것.
다음 작업을 수행합니다.
let intArray = Array(min...max)
이 방법은 다음과 같은 이유로 유효합니다.Array
이니셜라이저가 를 수신하고 있다.SequenceType
그리고.Range
준거하다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
type을 입력합니다.
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)
}
Closed Range & Range 인스턴스 간격은 다음과 같은 함수로 reduce()를 사용하여 구현할 수 있습니다.
func sumClosedRange(_ n: ClosedRange<Int>) -> Int {
return n.reduce(0, +)
}
sumClosedRange(1...10) // 55
func sumRange(_ n: Range<Int>) -> Int {
return n.reduce(0, +)
}
sumRange(1..<11) // 55
언급URL : https://stackoverflow.com/questions/32103282/swift-convert-rangeint-to-int
'programing' 카테고리의 다른 글
USIMageView를 비례적으로 확장하는 방법 (0) | 2023.04.09 |
---|---|
Git 저장소에 이미 커밋된 파일 무시 (0) | 2023.04.09 |
데이터가 있는 마지막 열을 찾으려면 어떻게 해야 합니까? (0) | 2023.04.09 |
크기 조정 가능한 창에서 버튼을 최소화하고 최대화하는 방법 (0) | 2023.04.09 |
StackPanel의 자녀가 최대 공간을 아래로 채우도록 하려면 어떻게 해야 합니까? (0) | 2023.04.09 |