작성
·
283
0
let m = Matrix()
m[0,0]
// m[0,10]
struct Matrix2 {
var data = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
subscript(row: Int, col: Int) -> Int? {
if row < data.count && col < data[0].count { // 행의개수, 열의개수 미만 3이면 0~2까지
return data[row][col]
} else { return nil }
} // 읽기전용 서브스크립트, get {}생략 됨
}
let test = Matrix()
m[0,4]
답변 1
0
안녕하세요 :)
두번째 인덱스 4는 범위를 벗어난 인덱스 입니다.
data에 저장된 배열에는 모두 세 개의 배열이 저장되어 있고, 각 배열마다 세 개의 숫자가 저장되어 있습니다.
그래서 두 배열 모두 유효한 인덱스 범위는 0 ~ 2입니다.
오오 됐어요.. 감사합니다.. ㅠㅠㅋㅋㅋㅋ
Matrix2로 만들어놓고 그냥 Matrix()로 썼네요 ㅡㅡ;;
row번째로 하려면 조건식이
if row < data.count && col < data[row].count { // 행의개수, 열의개수 미만 3이면 0~2까지
return data[row][col]
} else { return nil }
왠지 이렇게하면 될거같은데 선생님 의견은 어떠신지염
ㅠ.ㅠ.. 2차원 배열 인덱스가 다 2까지인건 아는데욥..
해당 인강 마지막에 인덱스 유효값일때만 확인하는거 도전과제로
구현해보라해서 저렇게 해봤는데
if랑 옵셔널 사용한 조건식은 에러가 안나는데
코드 실행하면 out of range라고 떠서요ㅜ