Arrays
- 같은 타입의 값들이 순서대로 정렬되어 있는 리스트
[value1, value2, value3]
생성
1. 빈 Array 생성
var myArray: [Int] = []
var myArray: Array<Int> = []
var myArray = [Int]()
2. 타입 명시
var names: [Strings] = ["Anne", "Gary", "Keith"]
3. 타입 추론
var names = ["Anne", "Gary", "Keith"]
4. 같은 값이 여러개 들어있는 Array 생성
- array initializer를 이용해 같은 값이 여러개 들어있는 array 생성이 가능하다.
var myArray = [Int](repeating: 0, count: 100)
접근
1. subscript syntax
- array의 index를 통해 해당 위치의 값에 접근 (0 <= index < arr.count)
var name = ["Amy", "Keith"]
let firstName = names[0] "Amy"
2. contains(_:)
- Array에 특정 값이 존재하면
true
, 존재하지 않으면 false
를 반환한다.
let numbers = [4, 5, 6]
if numbers.contains(5) {
print(”There is a 5”)
}
길이
1. count
- array의 길이를 반환해주는 property
let count = myArray.count
2. isEmpty
- array의 길이가 0이면
true
, 0보다 크다면 false
를 반환
if myArray.isEmpty { }
추가
1. append(_:)
- array의 맨 끝에 새로운 값을 1개 추가한다.
var name = ["Amy"]
names.append("Joe")
2. +=
- array의 맨 끝에 새로운 값 여러개를 한번에 추가할 수 있다.
var name = ["Amy"]
names += ["Keith", "Jane"]
3. insert(_:at:)
- array의 특정 index에 새로운 값을 삽입한다. (0 <= index < arr.count)
var name = ["Amy"]
names.insert("Bob", at: 0)
수정
1. subscript syntax
- array의 index를 통해 해당 위치의 값 수정 (0 <= index < arr.count)
var name = ["Amy", "Keith"]
names[1] = "Paul"
삭제
1. remove(at:)
- array의 특정 index에 위치한 값을 삭제한다.
- 삭제한 값을 반환한다.
var names = [”Amy”, “Brad”, “Chelsea”, “Dan”]
let chelsea = names.remove(at: 2)
2. removeLast()
- array의 마지막 값을 삭제한다.
- 삭제한 값을 반환한다.
var names = [”Amy”, “Brad”, “Chelsea”, “Dan”]
let dan = names.removeLast()
3. removeAll()
var names = [”Amy”, “Brad”, “Chelsea”, “Dan”]
names.removeAll()
Array + Array
- 같은 타입의 Array끼리 더해 새로운 Array를 생성할 수 있다.
let array1 = [1, 2, 3]
let array2 = [4, 5, 6]
let array = array1 + array2
Array 내부에 Array
let array1 = [1,2,3]
let array2 = [4,5,6]
let containerArray = [array1, array2]
let firstArray = containerArray[0]
let firstElement = containerArray[0][0]
Dictionaries
- key와 value로 이루어져 있고 순서가 존재하지 않는다.
- key는 중복되지 않고 고유해야 한다.
- 원하는 key의 value를 빠르게 검색할 수 있다.
[key1: value1, key2: value2, key3: value3]
생성
1. 빈 Dictionary 생성
var myDictionary: [String: Int] = [:]
var myDictionary = Dictionary<String, Int>()
var myDictionary = [String: Int]()
2. 타입 추론
var scores = [”Richard”: 500, “Luke”: 400, “Cheryl”: 800]
접근
1. subscript syntax
- 특정 key를 통해 해당 값에 접근
- 해당 key가 존재하지 않으면
nil
을 반환
var scores = [”Richard”: 500, “Luke”: 400, “Cheryl”: 800]
if let lukesScore = scores[”Luke”] {
print(lukesScore)
}
var scores = [”Richard”: 500, “Luke”: 400, “Cheryl”: 800]
if let henrysScore = scores[”Henry”] {
print(henrysScore)
}
2. keys
- dictionary의 key값들을 모은 리스트 반환
- 해당 값을 사용하기 위해선 array로 변경해아함
var scores = [”Richard”: 500, “Luke”: 400, “Cheryl”: 800]
let players = Array(scores.keys)
3. values
- dictionary의 value값들을 모은 리스트 반환
- 해당 값을 사용하기 위해선 array로 변경해아함
var scores = [”Richard”: 500, “Luke”: 400, “Cheryl”: 800]
let players = Array(scores.values)
추가, 수정
1. subscript syntax
- 특정 key를 통해 값에 접근
- 해당 key가 존재하면 value을 수정하고, 존재하지 않으면 해당 key와 value를 추가한다.
var scores = [”Richard”: 500, “Luke”: 400, “Cheryl”: 800]
scores["Oli"] = 399
var scores = [”Richard”: 500, “Luke”: 400, "Oli": 200]
scores["Oli"] = 399
2. updateValue(_:, forKey:)
- 해당 key가 존재할 때에만 해당 key의 value를 수정하고, 이전 value를 반환
- 해당 key가 존재하지 않으면
nil
을 반환
var scores = [”Richard”: 500, “Luke”: 400, “Cheryl”: 800]
let oldValue = scores.updateValue(100, forKey: “Richard”)
print(scores)
if let oldValue = scores.updateValue(100, forKey: “Richard”) {
print(”Richard’s old value was \(oldValue)”)
}
삭제
1. subscript syntax
- 특정 key를 통해 접근하여 해당 value를
nil
로 변경
var scores = [”Richard”: 100, “Luke”: 400, “Cheryl”: 800]
scores[”Richard”] = nil
2. removeValue(forKey:)
- 특정 key가 존재한다면 해당 key, value를 삭제
- 삭제한 value 값을 반환
if let removedValue = scores.removeValue(forKey: “Luke”) {
print(”Luke’s score was \(removedValue) before he stopped
playing”)
}