스위프트 공식문서를 참조하였습니다.
콜렉션 타입
스위프트에서는 3개의 콜렉션 타입을 제공한다.( array, set, dictionary)
- 콜렉션의 경우 또한 상수 let으로 할당하게 되면 변경 불가능 하다.
배열(Array)
배열 선언
var someInt = [Int]() // int형 배열 선언 someInt.append(3) //배열에 3추가 someInt=[] //배열비우기
기본 배열값으로 빈 배열 생성
repeating과 count를 통해서 배열을 생성할수 있다.
var threeDouble =Array(repeating : 3, count: 3) // threeDouble = (Int)[3,3,3]
배열을 배열끼리 더하기
var someArray = Array(repeating : 3, count: 3) //someArray = [3,3,3] var sixArray = someArray + someArray //sixArray = [3,3,3,3,3,3]
리터럴을 이용한 배열의 생성
var list:[String] = ["eggs","pork", "beef"] var list = ["eggs","pork", "beef"]
배열 접근 및 변환
문자열과 동일하게 사용가능하다.
즉
count, isEmpty, insert( at: ), remove(at: ), append프로퍼티와 메쏘드를 사용해서 접근하고 확인가능하다.
특정위치로의 원소 접근은 인덱스를 통한 직접 접근이 가능함
배열의 순환
배열의 순환 같은 경우 python과 동일하게 for in loop를 사용할수 있다.
var list:[String] = ["eggs","pork", "beef"] for item in list{ print(item)} // eggs, pork, beef
값과 인덱스 둘다 출력을 해야 할때는
enumerated()를 사용하면 된다.
var shoppingList = ["Six eggs", "Milk", "Flour"] for (index, value) in shoppingList.enumerated() { print("Item \(index + 1): \(value)") } // Item 1: Six eggs // Item 2: Milk // Item 3: Flour
셋(Set) : 집합
Set 형태로 저장 되기 위해서는 데이터 타입이 반듯이
hashable해야한다.
스위프트에서
hashable한 데이터 타입은
Double, Boo, String, Int형이다.
hashable???
hashable이란 기본적으로 단순한 숫자로 데이터를 변환 가능한 값을 의미한다.
hashable의 정의는 Hashable Protocol을 지키고 있다 이며,
Hashable Protocol의 정의는 Equatable Protocol을 지킨다 이다.
Equatable Protocol이란 == 연산자 혹은 != 연산자가 가능하다는 뜻
빈 Set 생성
//일반 생성 var letters = Set<Character>() //타입 설정하여 리터럴로 선언 var genres:Set<String> = ["Rock", "Classic", "Hip hop"] //타입추론을 통한 선언 var genres:Set = ["Rock", "Classic", "Hip hop"]
set 접근과 변경
일반 배열과 동일하게 count, insert, remove, isEmpty와 같은 프로퍼티가 가능하지만 중요한점은 직접적으로 문자열이나 값을 통해 접근가능하다.
- Set의 가장 중요한점은 탐색 속도가 빠르다는 점이다.
Set 명령
inersection, symmetricDifference, union, subtracting을 사용가능하다.
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: )를 사용할수 있다.
superset은 교집합이 있는가,
strict subset은 완전 안에 포함되는가
strict superset은 완전 포합하고 있는가
dis joint는 완전 개별된 집합인가
그리고 모든 메쏘드들은 bool값을 반환한다.
사전 (Dictionaries)
dictionary는 key와 value를 하나의 묶음으로 저장하는 방식인 콜렉션 타입이다.
c++의 해쉬와 동일한 방법이다.
빈 dictionary 생성
var diction = [Int:String]() diction[19]="nine" diction=[:] // 초기화
리터럴을 이용한 dictionary생성
var diction: [String:String] =["hi":"myfriend", "hellow":"buddy"]
dictionary의 접근과 변경
동일하게 count와 isEmpty사용가능
키를 이용해서 값 할당 가능
diction["hi"] = "go to hell" //var diction: [String:String] =["hi":"go to hell", "hellow":"buddy"]
Uploaded by
N2T