GGURUPiOS
Swift 공식 문서 정리 - (4) Collection Types 본문
컬렉션 유형 ( Array, Set, Dictionary )
스위프트는 Array, Set, Dictionary 세가지 컬렉션 유형을 제공함
위 컬렉션 유형들은 저장할 수 있는 값 및 키 유형에 대해 항상 명확함
컬렉션의 가변성
변수에 할당하면 변경이 가능함.
상수에 할당하면 변경 불가, 크기 내용 모두 변경 불가.
컬렉션 성능을 위해 변경이 필요없으면 상수로 선언하자.
Array ( 배열 )
동일한 유형의 값을 저장함
배열유형 축약형 문법
배열 타입은 Array로 적을수 있고, [Element]형태로 사용 가능
빈 배열 생성
var someInts: [Int] = [] // 이니셜라이저 구문을 사용하여 만들 수 있음
기본값으로 배열 생성
var threeDoubles = Array(repeating: 0.0, count: 3)
// [0.0, 0.0, 0.0]
두개의 어레이를 함께 추가하여 어레이 만들기
더하기 연산자로 배열 두 개를 함께 추가하여 새 배열을 생성 가능
var anotherThreeDoules = Array(repeating: 2.5, count: 3)
// [2.5, 2.5, 2.5]
var sixDoubles = threeDoubles + anotherThreeDoubles
// [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]
배열 리터럴로 배열 만들기
var shoppingList: [String] = [”Eggs”, “Milk”]
위와 같이 초기화해서 생성할 수도 있음
위 처럼 초기화 해서 배열을 생성할 때, 스위프트의 타입 추론 때문에 유형을 작성할 필요가 없음
var shoppingList = [”Eggs”, “Milk”]
위와 같이 생성 가능
어레이 접근 및 수정
count 로 항목 수를 확인 할 수 있음
append 를 통해 배열 끝에 새 항목을 추가 할 수 있음
+= 를 통해 하나 이상의 배열을 추가 할 수 있음
index를 통해 배열안의 항목 값에 접근, 수정 가능 함
var shoppingList = [”Eggs”, “Milk”]
// 갯수 확인
shoppingList.count // 2
// 항목 접근, 추가 및 수정
shoppingList += ["Powder"] // ["Eggs", "Milk", "Powder"]
shoppingList.append("Banana") // ["Eggs", "Milk", "Powder", "Banana"]
shoppingList[0] // "Eggs"
shoppingList[0] = "Two eggs" // shoppingList == ["Two eggs", "Milk", "Powder", "Banana"]
shoppingList[4...6] = ["Apple", "Carrot"] // ["Two eggs", "Milk", "Powder", "Banana", "Apple", "Carrot"]
shoppingList.insert("Maple Syrup", at: 0)
// 항목 삭제
let mapleSyrup = shoppingList.remove(at: 0)
// remove 메서드는 제거된 항목을 반환 함, 하지만 필요 없다면 무시할 수 있음
주의 할 점은, 범위 밖에있는 인덱스 값에 접근하거나 수정하려고 하면 런타임 오류가 발생함.
index 는 0 부터 시작하고, count 는 1부터 시작하기 때문에 주의 해야함
배열 반복
for-in loop 를 사용해서 배열의 전체 값 집합 반복 가능
각 항목의 정수 인덱스와 값이 필요할 경우 enumerated() 로 접근 가능
for (index, value) in shoppingList.enumerated() {
print(”\\(index): \\(value)”)
}
SET (셋)
Set은 컬렉션에 동일한 유형의 고유한 값을 저장 함 (중복이 제거된 배열이라 생각하면 될 듯)
Set은 반드시 타입이 hashable 이어야 함
Swift에서 String, Int, Double, Bool 같은 기본 타입은 기본적으로 hashable 임
SET 생성 및 초기화
var letters = Set<Character>()
letters.insert("a")
letters = []
배열 리터럴로 SET 생성
var favoriteGenres: Set<String> = ["Rock", "Classical", "HipHop"]
// 타입 추론이 자동으로 되기 때문에 아래와 같이 선언가능
var favoriteGenres: Set = ["Rock", "classical", "HipHop"]
SET 접근 및 수정
메서드와 프로퍼티를 통해 접근, 수정 가능
count, isEmpty 메서드를 통해 갯수, 빈배열인지 확인 가능
대부분의 메서드가 위에 언급한 Array의 메서드랑 비슷하기 때문에 넘어가도록 하자.
SET 반복
for-in loop 를 사용해서 반복 가능
그러나 주의할점은 Set유형에는 정의된 순서가 없다. sorted() 메서드를 사용해서 정렬해서 사용 가능
SET 명령
메서드를 이용해 두 SET간의 결합에 사용 가능
let oddDigits: Set = [1, 3, 5, 7, 9]
let evenDigits: Set = [0, 2, 4, 6, 8]
let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]
oddDigits.union(evenDigits).sorted() // 두 세트를 결합 하고 정렬
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
oddDigits.intersection(evenDigits).sorted() // 교집합을 가져온 후 정렬
// []
oddDigits.subtracting(singleDigitPrimeNumbers).sorted() // 빼고 정렬
// [1, 9]
oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted()
// [1, 2, 9] 교집합을 빼고 합쳐서 정렬
Set의 멤버십과 동등 비교
== 연산자
isSuperset(of:) isStrictSubset(of:) isStrictSuperset(of:) isDisjoint(with:)
등을 사용하여 동등 비교 가능
Dictionaries ( 사전 )
사전은 지정된 순서가 없음. 특정 단어에 대한 정의를 찾기위해 사전을 사용하는 것 처럼, 식별자를 기반으로 찾아야 할 때 사용함.
축약형 Dictionary
[Key: Value] 형태로 선언해서 사용 가능
빈 Dictionary 생성
var namesOfIntegers: [Int: String] = [:]
namesOfIntergers[16] = "sixteen"
namesOfIntergers = [:] // 다시 빈 딕셔너리가 됨.
사전 리터럴로 사전 만들기
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
var airports: = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
// 타입 추론을 이용해 위와 같이 타입 선언 생략 가능
사전 액세스 및 수정
다른 컬렉션과 마찬가지로 count, isEmpty 등으로 갯수, 비어있는지 여부 확인 가능
접근, 수정 하기 위해서는 airports[Key] 로 가능하다
사전 반복
for (airportCode, airportName) in airports {
//~~~
}
// 위와같이 각 항목은 (key,value) 튜플로 반환 됨.
// 혹은 key나 value만 반복문을 돌릴 수도 있음
// 위의 airports 자리에 airports.keys, airports.values 활용
'Swift > 공식문서 정리 ( 문법 )' 카테고리의 다른 글
Swift 공식 문서 정리 - (6) Functions (1) | 2023.04.19 |
---|---|
Swift 공식 문서 정리 - (5) Control Flow (0) | 2023.04.19 |
Swift 공식 문서 정리 - (3) Strings and Characters (0) | 2023.04.19 |
Swift 공식 문서 정리 - (2) Basic Operators (기본 연산자) (1) | 2023.04.18 |
Swift 공식 문서 정리 - (1) The Basics (0) | 2023.04.18 |