HIT해

[Swift 기초문법 - 54] stride 본문

Swift/Swift 기초문법

[Swift 기초문법 - 54] stride

힛해 2024. 8. 19. 22:36
728x90

stride란?

범위안에서 반복하는 것

 

stride to

from에서 to가 되기 전까지!

// 범위안에서 반복처리
for countdown in stride(from: 5, to: 0, by: -1){
    print("카운트 다운 ", countdown)
}

 

결과

카운트 다운  5
카운트 다운  4
카운트 다운  3
카운트 다운  2
카운트 다운  1

 

to가 0이기에 0이전인 1까지만 반복된다.

 

stride through

from에서 through까지!

for countdown in stride(from: 5, through: 0, by: -1){
    print("카운트 다운 ", countdown)
}

 

실행결과

카운트 다운  5
카운트 다운  4
카운트 다운  3
카운트 다운  2
카운트 다운  1
카운트 다운  0

 

stride를 활용해서 1차원 배열을 2차원 배열로 만들어보자

extension Array {
    
    func chunks(_ chunkSize: Int) -> [[Element]] {
        return stride(from: 0, to: self.count, by: chunkSize).map{
            return Array(self[$0..<Swift.min($0 + chunkSize, self.count)])
            // 자리가 부족한 건 자신의 수만큼 배열의 크기로 정한다.
        }
    }
}

let numbers = Array(1...10)
let chunkedArray = numbers.chunks(2)

 

실행결과

 

2개씩 나누어져서 만들어진 것을 볼 수 있다.

 

정리하자면

stride를 활용하면 여러가지 함수를 만들어낼 수 있을 것 같다