알고리즘을 풀고 다른 사람들의 답을 훑어보던 도중 stride라는 함수를 발견했는데, 엄청 편리한 것 같아서 정리해볼게요ㅎㅎ
먼저 stride 함수에 대해서 간단히 말하자면 For-Loop 문 (for문)에서 컨트롤 하는 index에 특정한 범위를 주는 역할을 해요.
for 문을 사용할 때, index로 무언갈 하고 싶은 적이 많을텐데, 무조건 하나씩 올라가야 하는 문제 때문에 불편한 기억이 많으실텐데요.
stride를 쓰면, 시작점과 끝 지점, 얼마나 띄어서 세고 싶은지, 양수 방향으로 세고 싶은지 등을 컨트롤 할 수 있어요!
간단하게 예시를 한번 들어볼게요!
다음 코드는 2부터 5까지의 배수 중 10 이하를 출력하는 코드에요
for outside_idx in 2...5 {
for inside_idx in stride(from: outside_idx , through: 10, by: outside_idx) {
print(inside_idx)
}
print("-----------")
}
출력 결과는 다음과 같아요
2
4
6
8
10
-----------
3
6
9
-----------
4
8
-----------
5
10
-----------
이 코드에는 두개의 For-Loop 가 사용되는데
첫번째 outside_idx는 우리가 아는 방식으로 하나씩 세 나가는거죠?
이 코드에서는 "N의 배수"에서의 N을 뜻하겠네요.
두번째 inside_idx가 바로 stride를 사용한 부분입니다.
해당 코드에서는 From, 즉 시작점 (여기서는 N의 배수를 셀거니까 N부터 시작했어요)
그리고 through, 즉 끝지점 (여기서는 10 이하까지 출력할 거라서 10으로 설정했어요)
그리고 얼마나 껑충껑충 뛰어서 셀 것인지를 나타내는 by (여기서는 N의 배수이니까 N을 넣었죠)
이렇게 stride를 사용하면 간단하게 for문의 index를 조작 가능합니다.
또 눈여겨봐야할 점이 매개변수 중 throught와 to의 차이점이에요.
through를 사용하면 해당 수"까지", to를 사용하면 해당 수를 "제외하고" 세게 됩니다.
그래서 다음 코드를 through에서 to로 변경하면 다음과 같이 결과 값이 나와요.
for outside_idx in 2...5 {
for inside_idx in stride(from: outside_idx , to: 10, by: outside_idx) {
print(inside_idx)
}
print("-----------")
}
2
4
6
8
-----------
3
6
9
-----------
4
8
-----------
5
-----------
'iOS 개발 > Swift' 카테고리의 다른 글
[ARC] 성능을 위해 unowned를 꼭 써야할까? (0) | 2023.02.03 |
---|---|
[ARC] Lazy 변수 클로저에서 Unowned 캡처가 항상 안전할까? (0) | 2023.02.02 |
[Concurrency] Semaphore로 비동기적 이벤트를 동기적으로 발생시키기 (0) | 2023.01.20 |
[ARC] 약한참조(Weak, Unowned)에 대해서 (0) | 2022.11.06 |
[Swift] 지정한 For-Loop 탈출하기 (0) | 2022.10.03 |
[Swift] appDelegate 참조 안전하게 하기 (0) | 2021.11.10 |
[Swift] lazy 변수란? - 애플개발자 문서가 수정됐다! (0) | 2021.09.06 |
[Swift] 프로토콜(Protocol)을 가장 기초부터 (2) | 2021.09.02 |