πŸ‘©πŸ»‍πŸ’»/Swift

5. μ»¬λ ‰μ…˜ νƒ€μž…(Array, Dictionary, Set) - iOS ν”„λ‘œκ·Έλž˜λ°μ„ μœ„ν•œ μŠ€μœ„ν”„νŠΈ 기초

reujusong 2020. 6. 16. 15:52
  • Array - μˆœμ„œκ°€ μžˆλŠ” 리슀트 μ»¬λ ‰μ…˜
  • Dictionary - 'ν‚€'와 'κ°’'의 쌍으둜 이루어진 μ»¬λ ‰μ…˜
  • Set - μˆœμ„œκ°€ μ—†κ³ , 멀버가 μœ μΌν•œ μ»¬λ ‰μ…˜

 

- Array

  • 멀버가 μˆœμ„œ(인덱슀)λ₯Ό κ°€μ§„ 리슀트 ν˜•νƒœμ˜ μ»¬λ ‰μ…˜ νƒ€μž…
  • μ—¬λŸ¬κ°€μ§€ λ¦¬ν„°λŸ΄ 문법을 ν™œμš©ν•  수 μžˆμ–΄ ν‘œν˜„ 방법이 λ‹€μ–‘ν•©λ‹ˆλ‹€.

 

- Dictionary

  • 'ν‚€'와 'κ°’'의 쌍으둜 이루어진 μ»¬λ ‰μ…˜ νƒ€μž…
  • Array와 λΉ„μŠ·ν•˜κ²Œ μ—¬λŸ¬κ°€μ§€ λ¦¬ν„°λŸ΄ 문법을 ν™œμš©ν•  수 μžˆμ–΄ ν‘œν˜„ 방법이 λ‹€μ–‘ν•©λ‹ˆλ‹€.

 

- Set

  • μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” 멀버가 μˆœμ„œμ—†μ΄ μ‘΄μž¬ν•˜λŠ” μ»¬λ ‰μ…˜
  • Array, Dictionary와 λ‹€λ₯΄κ²Œ μΆ•μ•½ν˜•μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŒ

 

import Swift

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

print(integers) // [1, 100]
print(integers.contains(100)) // true
print(integers.contains(99)) // false
integers.remove(at: 0)
integers.removeLast()
integers.removeAll()

print(integers.count)   // 0
//integers[0] // λ²”μœ„ 초과 - λŸ°νƒ€μž„ 였λ₯˜ λ°œμƒ
// Array<Double>와 [Double]λŠ” λ™μΌν•œ ν‘œν˜„
// 빈 Double Array 생성
var doubles: Array<Double> = [Double]()

// 빈 String Array 생성
var strings: [String] = [String]()

// 빈 Character Array 생성
// []λŠ” μƒˆλ‘œμš΄ 빈 Array
var characters: [Character] = []

// let을 μ‚¬μš©ν•˜μ—¬ Arrayλ₯Ό μ„ μ–Έν•˜λ©΄ λΆˆλ³€ Array
let immutableArray = [1, 2, 3]

// 뢈면 Array의 μš”μ†ŒλŠ” μΆ”κ°€/μ‚­μ œ λΆˆκ°€ - 컴파일 였λ₯˜ λ°œμƒ
//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
print(anyDictionary) // ["someKey": "value", "anotherKey": 100]
// Key에 ν•΄λ‹Ήν•˜λŠ” κ°’ λ³€κ²½
anyDictionary["someKey"] = "dictionary"
print(anyDictionary) // ["someKey": "dictionary", "anotherKey": 100]
// Key에 ν•΄λ‹Ήν•˜λŠ” κ°’ 제거
anyDictionary.removeValue(forKey: "anotherKey")
anyDictionary["someKey"] = nil
print(anyDictionary) // [:]
// 빈 Dictionary 생성
let emptyDictionary: [String: String] = [:]

// 초기 값을 κ°€μ§€λŠ” Dictionary 생성
let initalizedDictionary: [String: String] = ["name": "kdgt", "gender": "female"]

// let으둜 μ„ μ–Έν•œ λΆˆλ³€ DictionaryλŠ” μˆ˜μ • λΆˆκ°€ - 컴파일 였λ₯˜ λ°œμƒ
//emptyDictionary["key"] = "value"
// name 킀에 ν•΄λ‹Ήν•˜λŠ” 값이 Dictionary에 μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 수 μžˆμœΌλ―€λ‘œ
// 컴파일 였λ₯˜ λ°œμƒ - μ˜΅μ…”λ„ νŒŒνŠΈμ—μ„œ μƒμ„Ένžˆ λ‹€λ£Ήλ‹ˆλ‹€/ name에 값이 μ‘΄μž¬ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€λŠ” λΆˆν™•μ‹€μ„± λ•Œλ¬Έ
//let someValue: String = initalizedDictionary["name"]



//MARK: - Set
// 빈 Int Set 생성
var integerSet: Set<Int> = Set<Int>()
integerSet.insert(1)
integerSet.insert(100)
integerSet.insert(99)
integerSet.insert(99)
integerSet.insert(99)

print(integerSet) // [100, 99, 1]
print(integerSet.contains(1)) // true
print(integerSet.contains(2)) // false
integerSet.remove(100)
integerSet.removeFirst()

print(integerSet.count) // 1
// SetλŠ” μ§‘ν•© 연산에 κ½€ μœ μš©ν•©λ‹ˆλ‹€
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()
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]

 

자주 μ‚¬μš©ν•˜λŠ” 파이썬과 문법이 많이 λΉ„μŠ·ν•˜λ‹€. μ²΄κ°μœΌλ‘œλŠ” μžλ°” + 파이썬 정도? 인 것 κ°™λ‹€.