[Swift] (기초) 컬렉션 타입

2021. 7. 4. 17:22🍏/Swift 기초 공부

Any, AnyObject, nil

Any - Swift의 모든 타입을 지칭하는 키워드
AnyObject - 모든 클래스 타입을 지칭하는 프로토콜
nil - 없음을 의미하는 키워드 (null)

import Swift

//MARK: - Any
var someAny: Any = 100
someAny = "어떤 타입도 수용 가능 합니다"
someAny = 123.123

// let someDouble: Double = someAny

//MARK: - AnyObject
class SomeClass {}
var someAnyObject: AnyObject = SomeClass()

//someAnyObject = 123.123

//MARK: - nil
//someAny = nil
//someAnyObject = nil
//어떤 데이터 타입도 들어갈 수 있지만 빈값은 들어올수 없다

 

 

컬렉션 타입
Array - 순서가 있는 리스트 컬렉션
Dictionary - 키와 값의 쌍으로 이루어진 컬렉션 (key는 string / value는 any)
Set - 순서가 없고, 멤버가 유일한 컬렉션 Set는 중복이 없는 값들 / 중복된값이 없다는 것을 보장

import Swift

//MARK: - Array
//빈 Int Array 생성
var integers: Array<Int> = Array<Int>()
integers.append(1)
integers.append(100)

integers.contains(100)
integers.contains(99)

integers.remove(at: 0)
integers.removeLast()
integers.removeAll()

integers.count

//integers[0]

//Array<Double>와 [Double]는 동일한 표현
var doubles: Array<Double> = [Double]()

var strings: [String] = [String]()

var characters: [Character] = []

let immutableArray = [1,2,3]

//immutableArray.append(4)
//immutableArray.removeAll()
//변경 불가능 ~

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

anyDictionary

anyDictionary["someKey"] = "dictionary"
anyDictionary

anyDictionary.removeValue(forKey: "anotherKey")
anyDictionary["someKey"] = nil

anyDictionary

let emptyDictionary: [String: String] = [:]
let initalizedDictionary: [String:String] = ["name":"chan", "gender":"male"]

//MARK: - Set

var integerSet: Set<Int> = Set<Int>()
integerSet.insert(1)
integerSet.insert(100)
integerSet.insert(99)
integerSet.insert(99)
integerSet.insert(99)
integerSet

integerSet.remove(100)
integerSet.removeFirst()
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) // 합집합
let sortedUnion: [Int] = union.sorted()// 합집합 후 정렬
let intersection: Set<Int> = setA.intersection(setB) // 교집합
let subtracting: Set<Int> = setA.subtracting(setB) // 차집합