[Swift 기본 문법] 컬렉션 데이터 타입 (자료형)

Ryan (Geonhee) Son·2021년 3월 6일
0
post-thumbnail

본 Lecture Note는 yagom.net의 '스위프트 기초' 강의를 수강하고 작성하였습니다.

Collection 타입은 여러 값들을 묶어서 하나의 상수나 변수로 다룰 수 있도록 도와주는 타입입니다.

Array

순서(인덱스)가 있는 리스트 컬렉션 타입입니다. 배열이라고도 부릅니다.

var integers: Array<Int> = Array<Int>()	// [] 빈 배열 생성
integers.append(1)		// [1]
integers.append(100)	// [1, 100]
integers.append(100.1)	// 에러 발생! Int Array에 Double을 할당할 수 없습니다.

integers.contains(100)	// true (배열이 100을 가지고 있는가?)
integers.contains(99)	// false (배열이 99를 가지고 있는가?)

integers.remove(at: 0)	// 1 반환 (0번 인덱스의 요소 삭제)
integers.removeLast()	// 100 반환 (마지막 요소 삭제)
integers.removeAll()	// 모든 요소 삭제

integers.count			// 0 (integers 배열의 요소 개수)

integers[0]				// 에러 발생! 없는 요소에 접근하려고 하면 잘못된 접근으로 인해 프로그램이 강제 종료됩니다.
// Array<Double>과 [Double]은 동일한 표현입니다.
var doubles: Array<Double> = [Double]()
var strings: [String] = [String]()
var characters: [Character] = []

// let을 사용하여 
let을 사용하여 Array를 선언하면 불변 Array가 됩니다.
let immutableArray = [1, 2, 3]

immutableArray.append(4)	// 에러 발생! 상수로 선언되었으므로 요소 추가가 불가능합니다.

Dictionary

키(key)와 값(value)의 쌍으로 이루어진 컬렉션 타입입니다. 해시맵과 유사합니다.

// Key가 String 타입이고 Value가 Any인 Dictionary 생성
var anyDictionary: Dictionary<String, Any> = [String: Any]()
anyDictionary["someKey"] = "value"	// ["someKey": "value"]
anyDictionary["anotherKey"] = 100	// ["anotherKey": 100, "someKey": "value"]

anyDictionary["someKey"] = "dictionary"	// someKey 키의 값을 바꾸고 싶으면 이렇게 할당합니다.
anyDictionary["someKey"] = nil	// 특정 키의 값을 없애고 싶을 때는 nil을 할당합니다.

anyDictionary.removeValue(forKey: "anotherKey")	// 키의 값이었던 100 반환 (특정 키를 삭제할 수 있습니다.)

let emptyDictionary: [String: String] = [:]	// 빈 Dictionary 생성
let initializedDictionary: [String: String] = ["name": "Ryan", "gender": "male"]

let someValue: String = initializedDictionary["name"]	// 에러 발생! name 키에 해당하는 값을 someValue에 할당하고자 하였더니 실패하였습니다. 
// 이는 name의 값을 가져올 때 값이 있을 수도, 없을 수도 있음을 고려하였기에 일어난 일입니다.
// 향후 optional 개념의 학습을 통해 실패 이유를 알 수 있습니다.

Set

순서가 없고 멤버가 유일한 컬렉션입니다. 수학의 집합 개념과 유사합니다.

// Set는 축약형 문법이 없습니다.
var integerSet: Set<Int> = Set<Int>()	// Set([])
integerSet.insert(1)	// {1}
integerSet.insert(100)	// {100, 1}
integerSet.insert(99)	// {1, 100, 99}
integerSet.insert(99)	// {1, 100, 99}
integerSet.insert(99)	// {1, 100, 99}

integerSet.contains(1)	// true
integerSet.contains(2)	// false

integerSet.remove(100)	// 100 반환
integerSet.removeFirst()

integerSet.count	// 1

let setA: Set<Int> = [1, 2, 3, 4, 5]
let setB: Set<Int> = [3, 4, 5, 6, 7]

let union: Set<Int> = setA.union(setB)	// {2, 4, 5, 6, 7, 3, 1}
let intersection: Set<Int> = setA.intersection(setB) // {5, 3, 4}
let subtracting: Set<Int> = setA.subtracting(setB)	 // {2, 1}

let sortedUnion: [Int] = union.sorted()	// [1, 2, 3, 4, 5, 6, 7]
profile
합리적인 해법 찾기를 좋아합니다.

0개의 댓글