728x90
반응형
개인적으로 여러 언어를 접하면서 가장 표현법이 다양해서 헷갈리는 친구들이다.
1. Array (배열)
Swift에서 배열을 선언하는 문장을 본 첫 느낌은 Kotlin에서의 ArrayList같다는 느낌을 가장 먼저 받았다.
그런데 여기에 배열을 한 스푼추가한... 그런 느낌? <>를 쓰다가도 []를 쓰고 뭔가 어색했다.
var integers: Array<Int> = Array<Int>()
//var integers: Array<Int> = [Int]()
//var integers: Array<Int> = []
//var integers: [Int] = Array<Int>()
//var integers: [Int] = [Int]()
//var integers: [Int] = []
//var integers = [Int]()
//위의 주석들이 Array를 선언하는 다른 방법들이다.
//내 예상보다 너무 많았다.
또, ArrayList같다고 했던 이유 중 이런 이유도 있었다.
integers.append(1) //멤버 추가
integers.append(100)
print(integers) //멤버들 출력
print(integers.contains(11)) //멤버 포함 여부 - false
integers[0] = 99 //멤버 교체
integers.remove(at: 0) //멤버 삭제
print(integers.count) //멤버 수 확인
let immutableArray = [1, 2, 3] //불변 Array는 let 키워드를 통해 생성
보다시피 var 키워드를 통해 만든 Array는 멤버를 추가, 삭제, 교체가 가능했는데 let 키워드를 통해 만든 Array는 불가능했다.
원래 C, Java, Kotlin을 배워본 사람으로서 Array의 길이가 가변적인 것이 조금 당황스러웠다.
2. Dictionary
key와 value의 쌍으로 이루어진 컬렉션 타입이다.
이 녀석도 얼핏 보니 Java, Kotlin에서 사용하던 Map방식과 비슷하다고 생각이 들었다.
var anyDict: Dictionary<String, Any> = [String: Any]() //key의 자료형은 String, value의 자료형은 Any인 Dictionary
//var anyDict: Dictionary <String, Any> = Dictionary<String, Any>()
//var anyDict: Dictionary <String, Any> = [:]
//var anyDict: [String: Any] = Dictionary<String, Any>()
//var anyDict: [String: Any] = [String: Any]()
//var anyDict: [String: Any] = [:]
//var anyDict = [String: Any]()
//위의 주석들은 Dictionary를 생성하는 다른 방법들이다
anyDict["firstKey"] = "value" //키에 해당하는 값 할당
anyDict["secondKey"] = 10
print(anyDict) //anyDict의 key, value 쌍을 모두 출력 (아까봤던 Array처럼)
anyDict["firstKey"] = "dictionary" //키에 해당하는 값 변경
anyDict.removeValue(forKey: "firstKey")
anyDict["secondKey"] = nil
let emptyDict: [String: String] = [:]
let initalizedDict: [String: String] = ["name": "kim", "gender": "male"]
//두 Dictionary 모두 값 변경 불가
//let someValue: String = initalizedDictionary["name"]
//위에서 분명 name이란 key에 kim이라는 value를 할당했지만 없을수도 있다고 컴파일러가 판단해 컴파일 에러가 발생한다
3. Set
중복되지 않은 멤버가 순서없이 존재하는 컬렉션이다.
Array, Dictionary와 다르게 축약형으로 선언할 수 없다.
var integerSet: Set<Int> = Set<Int>()
integerSet.insert(1) //멤버 추가
integerSet.insert(99)
integerSet.insert(99) //같은 멤버를 추가해도 더 이상 추가되지 않는다
integerSet.insert(100)
print(integerSet) //모든 멤버 출력
//Array에서처럼 contains, remove 함수가 제공된다
//integerSet.count는 총 멤버 수를 의미한다
//멤버의 유일성이 보장되기에 집합 연산에 사용 시 유용하다고 한다
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) //합집합
print(union) //[2, 4, 5, 6, 7, 3, 1]
let sortedUnion: [Int] = union.sorted() //합집합 오름차순 정렬
//자료형을 보면 Int형 배열이다
print(sortedUnion) //[1, 2, 3, 4, 5, 6, 7]
let intersection: Set<Int> = setA.intersection(setB) //교집합
print(intersection) //[5, 3, 4]
let subtracting: Set<Int> = setA.subtracting(setB) //차집합
print(subtracting) //[2, 1]
728x90
반응형
'Language > Swift' 카테고리의 다른 글
Swift - 함수 고급 (0) | 2022.09.17 |
---|---|
Swift - 함수 기본 (0) | 2022.09.16 |
Swift - Any, AnyObject, nil (0) | 2022.09.14 |
Swift - 기본 데이터 타입 (0) | 2022.09.13 |
Swift - 변수, 상수 (0) | 2022.09.12 |