배열의 인덱스를 지정해서 개별 아이템을 참조하는 방식 이외에도 범위 연산자를 사용하면 특정 범위의 인덱스에 해당하는 아이템을 모두 참조할 수 있다.
var alphabet = ["a", "b", "c", "d" ]
alphabet[0...2] // ["a", "b", "c"]
alphabet[1..<3] // ["b", "c"]
주로 일정 범위의 배열 데이터를 한꺼번에 읽어 들일 때 사용하는데, 사용하는 방식은 위와 같다.
범위 연산자를 이용하여 배열의 인덱스를 참조하면 범위에 해당하는 모든 인덱스의 아이템을 읽어오게 되고, 이때의 결과값은 배열로 전달된다.
📝 [0...2]는 alphabet [0], alphabet [1], alphabet [2]의 해당하는 아이템을 묶어서 결과값으로 전달해 달라 이런 의미🙂
범위 연산자로 읽어 들인 배열에 새로운 값을 할당하면 할당할 배열의 데이터와 범위 연산자로 읽어 들인 배열의 크기가 일치하지 않을 때도 값을 변경할 수 있다.
📝 범위 연산자로 읽어 들인 배열의 크기보다 더 큰 데이터를 할당할 수 있다는거지😆
alphabet[1...2] = ["1", "2", "3"]
// alphabet = ["a", "1", "2", "3", "d"]
위 구문을 보자.
범위 연산자에 의해 얻은 인덱스는 1, 2로써 이에 해당하는 데이터는 ["b", "c"]이다.
여기에 ["1", "2", "3"]을 할당하면 기존 ["b", "c"]는 삭제되고 그 자리를 ["1", "2", "3"]가 대신하게 된다.
이로 인해 전체 배열의 데이터는 ["a", "1", "2", "3"]가 된다.
📝 2개의 데이터가 제거되었지만 새로 3개의 데이터가 추가되었으므로 전체 배열의 길이로 보면 1만큼 커진 셈
범위 연산자로 가져온 배열보다 할당될 배열의 크기가 작은 경우에는 아래와 같다.
alphabet[2...4] = ["A"]
// alphabet = ["a", "1", "A"]
alphabet [2... 4]를 이용하여 가져오는 데이터는 모두 2개로 ["2", "3", "d"]가 이에 해당한다.
이 아이템들에 연결되어 있던 범위 인덱스에 ["A"]를 할당하려면 기존의 아이템 3개는 모두 제거되고, 대신 ["A"]가 추가된다.
이처럼 범위 연산자를 사용하여 배열보다 할당될 배열의 크기가 작은 경우에도 기존의 범위에 속하는 배열 아이템이 모두 제거되고 그 자리를 새로 대입하는 배열이 차지하게 된다.
📝 할당은 문제없이 진행!!
'메모장' 카테고리의 다른 글
Swift 집합 순회 탐색 (2) | 2023.03.22 |
---|---|
Swift 집합 (1) | 2023.03.21 |
Swift 배열 데이터 동적 추가 (1) | 2023.03.16 |
Swift 배열의 동적 선언과 초기화 (1) | 2023.03.15 |
Swift 배열 순회 탐색 (3) | 2023.03.14 |