배열( Array )은 일련의 순서를 가지는 리스트 형식의 값을 저장하는 데에 사용되는 자료형으로, 약간씩의 차이는 있지만 많은 프로그래밍 언어에 공통적으로 사용하는 자료형이기도 하다.
배열에 입력되는 개별 데이터들은 모두 각각의 순서가 존재하고, 이 순서를 일련번호, 즉 인덱스( Index )라고 부른다.
배열에서 인덱스를 배열 내 데이터 ( 아이템 )를 읽어올 수 있다. 인덱스는 정수로 이루어지며, 0부터 시작하여 데이터가 추가될 때마다 차례대로 증가하는 것이 특징이다.
배열에서 인덱스는 위 그림과 같이 순서대로 할당되며, 중간에 값을 생략하거나 건너뛰는 경우는 없다.
인덱스에 연결된 데이터가 삭제되더라도 인접한 다음 데이터들이 차례대로 앞으로 이동하면서 인덱스를 채워 넣는다.
📝 배열 처음이나 중간에 있는 아이템이 삭제되어도 실제로 사라지는 인덱스는 가장 마지막이지
연결된 데이터를 삭제한 후 배열의 그림은 아래와 같다.
이러한 특성 때문에 인덱스는 배열의 데이터와 생사고락을 같이하는 고유 코드 역할을 할 수 없다.
📝 그저 아이템의 순서를 나타내고, 아이템이 있는 위치를 가리키는 역할만 한다
중복된 인덱스가 없고 배열의 아이템이 바뀌지 않는 이상 인덱스와 데이터 간의 연결이 바뀌지 않지만, 배열 내에서 데이터를 삭제하면 그다음 데이터와 연결되므로 사용 시 주의해야 한다.
스위프트에서 사용하는 배열 자료형은 몇 가지 특징이 있다.
- 배열에 저장할 데이터의 타입에는 제약이 없지만, 하나의 배열에 저장하는 데이터 타입은 모두 같아야 한다
- 선언 시 배열에 저장할 데이터 타입을 명확히 정의해야 한다
- 배열의 크기는 동적으로 확장할 수 있다.
스위프트에서 배열을 정의하는 방법은 두 가지로, 정적( Static )인 방식과 동적 ( Dynamic )인 방식으로 나눌 수 있다.
정적인 방식은 처음부터 배열을 구성하는 데이터를 포함하여 정의하는 방식이다.
이 방식은 별도의 배열 선언이 없다는 장점이 있다. 정적인 방식으로 배열을 정의할 때에는 대괄호를 사용하여, 아래와 같이 대괄호 내에 차례대로 데이터를 나열하면 배열이 만들어진다.
예시
[ 데이터1, 데이터2, 데이터3, 데이터4...]
var city = ["Seoul", "New York", "LA", "Santiago"]
대괄호 안에 있는 "Seoul", "New York", "LA", "Santiago" 값들을 *리터럴( Literal )이라고 함.
📝 TMI : 리터럴( Literal )이란?
리터럴은 값 자체를 이야기하는 것으로 값이 변수나 상수에 담긴 형태가 아니라 그에 저장되는 값 자체를 리터럴이라고 한다.
리터럴( Literal ) 예시
let size = "184" // size 변수에 184라는 리터럴을 대입
Int(size) // 변수를 사용하는 예
Int("184") // 리터럴을 사용하는 예
이렇게 생성한 배열의 각 데이터는 인덱스를 사용하여 참조할 수 있다.
배열을 대입한 변수나 상수에 대괄호를 붙이고 원하는 아이템에 해당하는 인덱스를 입력하면 된다.
// 배열에 데이터를 참조하는 방법
city[0] // Seoul
city[1] // New York
city[2] // LA
city[3] // Santiago
배열의 인덱스는 항상 0부터 시작하기 때문에 배열에 입력된 아이템 역시 0부터 순서대로 번호를 할당받는다.
배열의 인덱스는 0부터 시작하는 특성으로 인하여 마지막 인덱스는 배열의 크기보다 항상 1만큼 적다.
'메모장' 카테고리의 다른 글
Swift 배열의 동적 선언과 초기화 (1) | 2023.03.15 |
---|---|
Swift 배열 순회 탐색 (3) | 2023.03.14 |
Swift 조건문 3 (3) | 2023.03.09 |
Swift 조건문 2 (3) | 2023.03.08 |
Swift 조건문 1 (2) | 2023.03.07 |