Xcode 9.* 에서 Swift 4를 사용하면서 Array, Dictionary 다루기 #2
일반적으로 코딩을 할 때 하나의 값을 다루기 보다는 한번에 다중의 값을 다루는 경우가 많습니다. 배열이나 딕셔너리 타입을 사용해서 처리하면 쉽게 처리할 수 있습니다. 혹은 집합형태의 연산이 필요해서 합집합, 교집합, 차집합을 다루는 경우 세트타입이 제공됩니다.
배열을 사용할 경우 Array<String>과 같이 선언하거나 약식으로 선언할 때 [Int]로 선언합니다. 기존 배열에 값을 추가할 때 +=연산자나 append메서드를 사용합니다.
var device:Array<String> = ["iphone", "ipad", "android", "windowPhone"]
var number:[Int] = [5, 10, 20, 10]
device += ["mac"]
딕셔너리는 보통 사전구조 또는 맵구조라고 말하기도 합니다. 쉽게 검색할 수 있는 유니크한 키에 값을 맵핑해서 저장하고 키로 빠른 검색을 합니다. 4쌍의 키와 값을 초기화하고 나중에 추가할 때 deviceDict["mac"] = 20과 같이 추가할 수 있습니다.
var deviceDict:[String:Int] = ["iphone":5, "ipad":10, "android":20, "windowPhone":10]
deviceDict["mac"] = 20
print(deviceDict)
집합연산이 필요하면 다음과 같이 Set형식으로 선언하고 초기화 한 후에 intersection, union, subtracting메서드를 불러서 교집합, 합집합, 차집합을 뽑아낼 수 있습니다.
let setA:Set = [1,2,3,3]
let setB:Set = [3,4,4,5]
setA.count
setA.intersection(setB)
setA.union(setB)
setA.subtracting(setB)
for item in setA {
print("item: \(item)")
}
for i in 1...5 {
print(i)
}
for (name, count) in deviceDict {
print("\(name) 준비된 갯수는 \(count)")
}
for (name, count) in deviceDict {
let description:String
switch count {
case 5:
description = "\(name)은 정확하게 \(count) 준비되었습니다."
case 6...10:
description = "\(name)은 여유있게 \(count) 준비되었습니다."
case 11...20:
description = "\(name)은 최대 \(count)대까지 준비되었습니다."
default:
description = "준비되지 않았습니다."
}
}