Post

Day 25 - TIL

심화주차 과제 구현하기! + 배열 인덱싱 Error

Day 25 - TIL

📘 Day 25 - Today I Learned

🔍 Today’s Error or Issue

Error : 배열을 인덱스로 접근하여 삭제를 하려고 하였다. 그래서 삭제를하면 인덱싱 에러가 뜨는걸 인지하고 역순으로 순회하여 삭제를 진행하려고 for i in count - 1 … 1 으로 range를 줬는데 아래와 같은 에러가 떴다.

1
Thread 1: Fatal error: Range requires lowerBound <= upperBound

위 코드는 Swift에서 범위를 만들 때 lowerBound(시작값)가 upperBound(끝값)보다 커서 잘못된 범위를 만들었을 때 발생하는 런타임 오류다.

🛠️ Troubleshooting

여러가지 방법이 있는데, stride를 사용하여 에러를 해결 해줬다.

📝 Learning Summary

stride는 일정한 간격으로 숫자를 반복할 수 있게 해주는 함수다.

1
2
stride(from: 시작값, to: 끝값, by: 간격)
stride(from: 시작값, through: 끝값, by: 간격)

오름차순으로 반복(끝값 포함 ❌)

1
2
3
for i in stride(from: 0, to: 10, by: 2) {
    print(i) // 0, 2, 4, 6, 8
}

오름차순으로 반복(끝값 포함 ⭕️)

1
2
3
for i in stride(from: 0, through: 10, by: 2) {
    print(i) // 0, 2, 4, 6, 8, 10
}

내림차순 반복

1
2
3
for i in stride(from: 10, through: 0, by: -2) {
    print(i) // 10, 8, 6, 4, 2, 0
}

📘 Lesson Learned

배열 인덱스를 역순으로 인덱싱을 할 때 기본적으로 그냥 반대로 인덱싱이 될줄 알았는데 swfit는 되지 않았다. 다음부터는 배열을 고칠때 조금 더 인덱스에 대해 신경 쓸 수 있도록 하자.

This post is licensed under CC BY 4.0 by the author.