본문 바로가기

Swift의 모든것

[Swift의 모든것] 스위프트 집단 자료형(Array, Set, Dictionary, Tuple)

안녕하세요 ~ 오늘은 Swift의 집단 자료형을 알아보도록 하겠습니다.
집단 자료형을 사용하면 데이터를 손쉽게 그룹 단위로 묶을 수 있으므로 다량의 데이터를 다룰 때 무척 편리하다고 합니다.
스위프트에서 제공해주는 집단 자료형으로는 (배열, 집합, 튜플, 딕셔너리)로 네 가지가 있습니다.
지금부터 하나씩 알아보도록 하겠습니다 !


배열(Array)
일련번호로 구분되는 순서에 따라 데이터가 정렬된 목록 형태의 자료형

가장 먼저 어느 프로그래밍 언어(?)에나 존재하는 배열입니다.

배열(Array)은 일련의 순서를 가지는 리스트 형식의 값을 저장하는 데에 사용되는 자료형으로,
약간씩의 차이는 있지만 많은 프로그래밍 언어가 공통적으로 제공하는 자료형이기도 합니다.

배열에 입력되는 개별 아이템들은 모두 각각의 순서가 있는데, 이 순서를 일련번호, 흔히 인덱스(Index)라고 부릅니다.
배열에서 인덱스는 순서대로 할당되며, 중간에 값을 생략하거나 건너뛰는 경우는 없습니다. 인덱스에 연결된 아이템이 삭제되더라도 인접한 다음 아이템들이 차례대로 앞으로 이동하면서 빈 인덱스를 채워 넣습니다.

정리해보자면,

1. 배열에 저장할 아이템의 타입에는 제약이 없지만, 하나의 배열에 저장하는 아이템 타입은 모두 같아야 합니다.
2. 선언 시 배열에 저장할 아이템 타입을 명확히 정의해야 합니다.
3. 배열의 크기는 동적으로 확장할 수 있습니다.

//배열 정의

var cities: [String] = ["Seoul", "New York", "LA", "Santiago"]

print(cities[0]) //Seoul
print(cities[1]) //New York
print(cities[2]) //LA
print(cities[3]) //Santiago

집합(Set)
중복되지 않은 유일 데이터들이 모인 집합 형태의 자료형

집합(Sets)은 같은 타입의 서로 다른 값을 중복 없이 저장하고자 할 때 사용하는 집단 자료형입니다.
집합은 배열과 매우 유사하지만, 배열을 사용하기에는 순서가 그다지 중요하지 않은 데이터들이거나 중복 없이 한 번만 저장되어야 하는 데이터들을 다룰 때 배열 대신 사용할 수 있는 자료형입니다.

//집합 정의 (잘못된 예시)
var genres: Set = ["Classic", "Rock", "Balad"]

 

위 구문은 음악 장르 데이터들을 집합 타입으로 정의하는 예입니다.
보시는 바와 같이 초기값으로 사용된 오른쪽 리터럴은 배열입니다.
따라서 genres 변수에 대한 타입 어노테이션이 없다면 이 데이터는 배열로 선언될 겁니다.
이를 막기 위해 타입 어노테이션 Set을 붙여줘야 합니다.

//집합 정의 (옳은 예시)
var genres: Set<String> = ["Classic", "Rock", "Balad"]

(Dictionary)
Key와 Value 쌍으로 데이터를 저장하는 집단 자료형

딕셔너리는 하나의 키와 하나의 데이터로 이루어진 집단 자료형입니다.
딕셔너리 내에서 키는 중복될 수 없고 동일 키값으로 추가할 경우 같은 키의 값으로 추가되지 않고 수정됩니다.
그리고 딕셔너리 안의 데이터 타입은 모두 일치해야하고 아이템 자체엔 순서가 없지만 키엔 내부적 순서가 있어 for문을 통해서 순회 가능합니다.

//딕셔너리 정의
var shoes: (String, Int) = ["nika":260, "adidax":265, "fuma":270]
var capital: (String, String) = ("KR":"Seoul", "EN":"London")

튜플(Tuple)
종류에 상관없이 데이터를 모은 자료형

튜플은 스위프트에서 제공하는 특별한 성격의 집단 자료형으로써, 파이썬에서도 사용되는 자료형입니다.
튜플은 한 가지 타입의 아이템만 저장할 수 있는 배열이나 딕셔너리와는 달리 하나의 튜플에 여러 가지 타입의 아이템을 저장할 수 있지만, 일단 선언되고 나면 상수적 성격을 띠므로 더 이상 값을 추가하거나 삭제하는 등의 변경이 불가능합니다.
즉, 타입과 관계없이 다양하게 저장할 수 있지만 오직 최초에 선언된 상태의 아이템만 사용할 수 있고 수정이나 삭제, 추가 등 변경할 수 없는 것이 튜플의 특징이라고 할 수 있습니다.

//튜플 정의
var tuple01: (Int, Int) = (100, 200)
var tuple02: (Int, String, Int) = (100, "a", 200)

 

Swift의 집단 자료형을 사용하여 데이터를 보다 효율적으로 사용해봅시다 ~!
오늘의 글은 이만 여기서 마치도록 하겠습니다.