Index out of range를 이 세상에서 없애는 방법
소개
안녕하세요 🌸 입니다.
대단한 기사의 제목에 이번은 되었습니다만,
배열의 수보다 큰 수를 지정하면 나오는 그 녀석을 이제 구제해 버리자고 이야기가 됩니다.
이번에는 Index out of range
오류를 더 이상 보지 않고 좋은 방법을 공유하고 싶습니다.
마에프리
Index out of range란 무엇인가?
만약을 위한 설명이 됩니다.
아무런 궁리도 없었던 배열이 있습니다.
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
배열의 내용은 보는 대로입니다만 4개가 됩니다.
print(test.count) // 4
다음을하면 당연히 ... 오류가 발생합니다.
요소수 이상으로 지정해 버리고 있으니까요.
이것이 Index out of range
가 발생하는 원인입니다.
배열은 이 경우라고 요소는 0番目から3番目まで
입니다.
print(test[4])
<이하 에러 화면>
원인에 대해
앞서 설명한 것처럼
말할 필요도없이 배열의 요소 수보다 높은 수를 지정하기 때문에 "그런 요소 없어"라고
화가 났어요.
이것이 단순한 원인이지만, 머리로 알고 있더라도 역시 실수입니다.
프로그래밍 방식으로 요소를 지정하면
불필요한 마음을 나눠야합니다.
해결책
그래서 겨우 소개할 수 있습니다.
정의한 요소를 넘은 수를 어떻게 해야 합니다.
방법으로 몇 가지가 있지만, 빠른 요소가 요소보다 큰 수를 지정하면 nil
돌려주는 방법이 제일 편하다고 생각합니다.
코드
nil을 내뿜어주는 체크용 extension 작성
먼저 다음 코드가 필요합니다.
아래 코드는 여기을 참조했습니다.
extension Array {
subscript (element index: Index) -> Element? {
// MARK: 配列の要素以上を指定していたらnilを返すようにする
indices.contains(index) ? self[index] : nil
}
}
발신자
아래에서 nil이 반환됩니다.
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
print(test[element: 4]) // nil
상기라고 nil의 제어하지 않으면 안되기 때문에 이하와 같이 했습니다.
이런 느낌입니다.
이제 nil 체크가 들어간 코드가 되었습니다.
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
guard let list = test[element: 4] else {
print("nilだったみたいですよ。")
return
} // 現状はここに入ります
print("受け取れたみたいです。", list)
끝에
이번에는 큰 타이틀로 소개했지만,
에러 붕괴의 스트레스를 조금은 지울 수 있는 기술이 아닐까 생각합니다.
여기 앞에서 봐 주셔서 감사합니다.
Reference
이 문제에 관하여(Index out of range를 이 세상에서 없애는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kaneko77/items/207376ef9664eb740712
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Index out of range란 무엇인가?
만약을 위한 설명이 됩니다.
아무런 궁리도 없었던 배열이 있습니다.
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
배열의 내용은 보는 대로입니다만 4개가 됩니다.
print(test.count) // 4
다음을하면 당연히 ... 오류가 발생합니다.
요소수 이상으로 지정해 버리고 있으니까요.
이것이
Index out of range
가 발생하는 원인입니다.배열은 이 경우라고 요소는
0番目から3番目まで
입니다.print(test[4])
<이하 에러 화면>
원인에 대해
앞서 설명한 것처럼
말할 필요도없이 배열의 요소 수보다 높은 수를 지정하기 때문에 "그런 요소 없어"라고
화가 났어요.
이것이 단순한 원인이지만, 머리로 알고 있더라도 역시 실수입니다.
프로그래밍 방식으로 요소를 지정하면
불필요한 마음을 나눠야합니다.
해결책
그래서 겨우 소개할 수 있습니다.
정의한 요소를 넘은 수를 어떻게 해야 합니다.
방법으로 몇 가지가 있지만, 빠른 요소가 요소보다 큰 수를 지정하면 nil
돌려주는 방법이 제일 편하다고 생각합니다.
코드
nil을 내뿜어주는 체크용 extension 작성
먼저 다음 코드가 필요합니다.
아래 코드는 여기을 참조했습니다.
extension Array {
subscript (element index: Index) -> Element? {
// MARK: 配列の要素以上を指定していたらnilを返すようにする
indices.contains(index) ? self[index] : nil
}
}
발신자
아래에서 nil이 반환됩니다.
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
print(test[element: 4]) // nil
상기라고 nil의 제어하지 않으면 안되기 때문에 이하와 같이 했습니다.
이런 느낌입니다.
이제 nil 체크가 들어간 코드가 되었습니다.
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
guard let list = test[element: 4] else {
print("nilだったみたいですよ。")
return
} // 現状はここに入ります
print("受け取れたみたいです。", list)
끝에
이번에는 큰 타이틀로 소개했지만,
에러 붕괴의 스트레스를 조금은 지울 수 있는 기술이 아닐까 생각합니다.
여기 앞에서 봐 주셔서 감사합니다.
Reference
이 문제에 관하여(Index out of range를 이 세상에서 없애는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kaneko77/items/207376ef9664eb740712
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
extension Array {
subscript (element index: Index) -> Element? {
// MARK: 配列の要素以上を指定していたらnilを返すようにする
indices.contains(index) ? self[index] : nil
}
}
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
print(test[element: 4]) // nil
let test = ["マチュピチュ", "モンサンミッシェル", "サグラダファミリア", "アンコールワット"]
guard let list = test[element: 4] else {
print("nilだったみたいですよ。")
return
} // 現状はここに入ります
print("受け取れたみたいです。", list)
이번에는 큰 타이틀로 소개했지만,
에러 붕괴의 스트레스를 조금은 지울 수 있는 기술이 아닐까 생각합니다.
여기 앞에서 봐 주셔서 감사합니다.
Reference
이 문제에 관하여(Index out of range를 이 세상에서 없애는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kaneko77/items/207376ef9664eb740712텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)