์ฝ๋ ์ ํ์ (Collection Types)
- ๋ฐฐ์ด, ์ธํธ(์งํฉ), ๋์ ๋๋ฆฌ 3๊ฐ์ง๊ฐ ์๋ค.
- ์ ์ฅํ๋ ๊ฐ์ ํ์
์ด ๋ช
ํํ๋ค.
- ex) Intํ์ ์ ๋ฐฐ์ด์ด๋ฉด Int๊ฐ๋ง ๋ฃ์ ์ ์๋ค.
๋ฐฐ์ด(Array)
var arr1: [Int] = [] // ์งง์ ํํ ์ ํธ
var arr2: Array<Int> = []
var map = Array(repeating: Array(repeating: 0, count: 3), count: 2)
// [[0, 0, 0], [0, 0, 0]]
// 0 0 0
// 0 0 0
- ๋ฐฐ์ด์ ์ ์ธ ๋ฐฉ๋ฒ: [Element], Array<Element>
- ๊ธฐ๋ณธ ๊ฐ์ผ๋ก ์ค์ ํ๊ณ ํฌ๊ธฐ๋ฅผ ๊ณ ์ ํ์ฌ ๋ฐฐ์ด์ ์์ฑํ๋ ์ด๊ธฐํ๋ ๊ฐ๋ฅ
- ex) ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ ๋ map ๋ง๋ค ๋ ์์ฃผ ์ฐ๊ฒ ๋๋ค.
var shoppingList = ["Eggs", "Milk", "Baking Powder", "Cheese"]
shoppingList[1...3] = ["Bananas", "Apples", "Candy"]
print(shoppingList) // ["Eggs", "Bananas", "Apples", "Candy"]
- ์๋ธ ์คํฌ๋ฆฝํธ ๊ตฌ๋ฌธ์ผ๋ก ๋ฒ์ ์์ ๊ฐ์ ํ๋ฒ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ๋ฐํ์ ์๋ฌ๊ฐ ๋ฌ๋ค.
์งํฉ(Set)
- ์์๊ฐ ์ค์ํ์ง ์๊ฑฐ๋ ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
- Set์ ํ์
์ ๋ฐ๋์ Hashable ํด์ผํ๋ค.
- Hashable์ด๋?
- Swift์ ๋ชจ๋ ๊ธฐ๋ณธ ํ์ (String, Int, Double, Bool)์ ๊ธฐ๋ณธ์ ์ผ๋ก hashable์ด๋ค.
- ๊ธฐ๋ณธ ํ์ ์ด ์๋๋ฉด Hashable ํ๋กํ ์ฝ์ ์ฑํํ์ (์ฐธ๊ณ )
- Hashable์ด๋?
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
// ํ๋์ ํ์
์ ๊ฐ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ์งํฉ ์์์ ํ์
์ ๋ช
์ํ์ง ์์๋ ๋๋ค.
var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
- Set ํ์ ์ ๋ช ์์ ์ผ๋ก ์ ์ธํด์ผ ํ๋ค. but ํ๋์ ํ์ ์ ๊ฐ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ → ์งํฉ ์์์ ํ์ ์ ๋ช ์ํ์ง ์์๋ ๋๋ค.
์งํฉ ์ฐ์ฐ ์ํ
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]
intersection(_:) ๋ฉ์๋
- ๋ ์งํฉ์ ๊ณตํต ๊ฐ์ ๊ฐ์ง๋ ์๋ก์ด ์งํฉ์ ์์ฑํ๋ค.
symmetricDifference(_:) ๋ฉ์๋
- ๋ ์งํฉ์ ๊ณตํต ๊ฐ์ ์ ์ธํ ์๋ก์ด ์งํฉ์ ์์ฑํ๋ค.
union(_:) ๋ฉ์๋
- ๋ ์งํฉ์ ๋ชจ๋ ๊ฐ์ผ๋ก ์๋ก์ด ์งํฉ์ ์์ฑํ๋ค.
subtracting(_:) ๋ฉ์๋
- ํน์ ์งํฉ์ ๊ณตํต ๊ฐ์ ์ ์ธํ ์๋ก์ด ์งํฉ์ ์์ฑํ๋ค.
let houseAnimals: Set = ["๐ถ", "๐ฑ"]
let farmAnimals: Set = ["๐ฎ", "๐", "๐", "๐ถ", "๐ฑ"]
let cityAnimals: Set = ["๐ฆ", "๐ญ"]
houseAnimals.isSubset(of: farmAnimals)
// true
farmAnimals.isSuperset(of: houseAnimals)
// true
farmAnimals.isDisjoint(with: cityAnimals)
// true
isSubset(of:) ๋ฉ์๋
- ํน์ ์งํฉ์ ๋ชจ๋ ๊ฐ์ด ํฌํจ๋์ด ์๋์ง ํ๋จ
isSuperset(of:) ๋ฉ์๋
- ์งํฉ์ ํน์ ์งํฉ์ ๋ชจ๋ ๊ฐ์ ํฌํจ ํ๋์ง ํ๋จ
isStrictSubset(of:) ๋๋ isStrictSuperset(of:) ๋ฉ์๋
- ๋ถ๋ถ์งํฉ์ธ์ง ์ด์งํฉ์ธ์ง ํ๋จ
isDisjoint(with:) ๋ฉ์๋
- ๋ ์งํฉ์ด ๊ณตํต ๊ฐ์ด ์๋์ง ํ๋จ
๋์ ๋๋ฆฌ(Dictionary)
- ์์์ ์๊ด์์ด ์ฝ๋ ์ ์ ๊ฐ์ ํ์ ์ ํค (key)์ ๊ฐ์ ํ์ ์ ๊ฐ (value)๋ฅผ ์ ์ฅ
- ๋์ ๋๋ฆฌ Key ํ์ ์ ๋ฐ๋์ Hashable ํ๋กํ ์ฝ์ ์ค์ํด์ผ ํ๋ค.
updateValue ๋ฉ์๋
var colors = ["red": "apple", "blue": "sea"]
colors.updateValue("phone", forKey: "black")
print(colors) // ["black": "phone", "red": "apple", "blue": "sea"]
- ํด๋น ํค๊ฐ ์์ผ๋ฉด value๊ฐ์ updateํ๋ค, oldValue๋ฅผ ๋ฆฌํดํ๋ค.
- ํด๋น ํค๊ฐ ์์ผ๋ฉด ์๋ก ์ ๋ฐ์ดํธ ํด์ค๋ค, nil์ ๋ฆฌํดํ๋ค.
let colorsKeys = [String](colors.keys) // ["blue", "red"]
let colorsValues = [String](colors.values) // ["sea", "apple"]
- ํค ๋๋ ๊ฐ๋ง ์๋ก์ด ๋ฐฐ์ด๋ก ์ด๊ธฐํ ํ ์ ์๋ค.
- but ๋์ ๋๋ฆฌ์์ ๊ฐ์ ธ์จ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์์๋ ์๋ค.
๋ง์ฝ์ [String] ์ ์๋ตํ๋ค๋ฉด
- Dictionary.Keys๋ผ๋ ๊ตฌ์กฐ์ฒด ํ์ ์ด๋ค.
- ๋น์ฐํ ์๋ธ์คํฌ๋ฆฝํธ๋ก ์ ๊ทผ์ด ๋์ง ์๋๋ค.
'Swift Language Guide' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift Language Guide] ํจ์(Functions) (0) | 2023.05.24 |
---|---|
[Swift Language Guide] ์ ์ดํ๋ฆ(Control Flow) (0) | 2023.05.24 |
[Swift Language Guide] ๋ฌธ์์ด๊ณผ ๋ฌธ์ (Strings and Characters) (2) | 2023.05.16 |
[Swift Language Guide] ๊ธฐ๋ณธ ์ฐ์ฐ์ (Basic Operators) (0) | 2023.05.16 |
[Swift Language Guide] ๊ธฐ๋ณธ (The Basics) (0) | 2023.05.16 |