//타입을 지정하지 않아도, 타입추론을 통하여 name을 String Type으로 선언
var name = "Lumi"
//그 후, 다른 타입의 값의 할당은 불가능합니다.
//name = 12 컴파일에러
typealias MyInt = Int
typealias HelloInt = Int
typealias OurDouble = Double
var age: MyInt = 20
var ratio: OurDouble = 10.2
var account: (String, Int, Double) = ("Lumi",1,1.03)
print(account.0) // "Lumi"
print(account.1) // 1
print(account.2) // 1.03
하지만 이런 경우에는 가시성이 떨어집니다
왜냐하면, 인덱스의 순서를 기억하는 것은 어려운 일이기 떄문입니다.
그래서 튜플의 요소의 이름을 지어줄 수 있습니다.
var account: (name: String, order: Int, ratio: Double) = ("Lumi",1,1.03)
// 기존과 같은 방법으로 인덱스를 이용할 수 있습니다.
print(account.0)
print(account.1)
print(account.2)
//같은 결과를 도출합니다. 하지만, 직관적인 코드 작성이 가능합니다.
print(account.name)
print(account.order)
print(account.ratio)
var array: Array<String> = ["Lumi", "HojongE", "Charlie", "Asher"]
// 위의 선언과 정확하게 일치하는 선언입니다.
var array: [String] = ["Lumi", "HojongE", "Charlie", "Asher"]
위 두 선언은 정확하게 같은 동작을 하는 선언입니다.
// 빈 배열을 선언하는 방법들
var emptyArray: [String] = [String]()
var emptyArray: [String] = Array<String>()
var emptyArray: [String] = []
빈 배열을 선언하는 방법들 입니다.
배열의 타입을 정확하게 명시해줬다면, [ ]만으로 빈 배열을 생성할 수 있습니다.
isEmpty 메소드를 이용해 빈 배열인지 확인할 수 있습니다.
빈 배열일 경우, true값이 반환됩니다.
// 배열을 하나 선언합니다.
var array: [String] = ["Lumi", "HojongE", "Charlie", "Asher"]
// isEmpty를 이용해 빈 배열인지 확인할 수 있습니다.
array.isEmpty // false
배열의 요소의 개수를 알 수 있습니다.
array.count //4
배열의 요소를 추가할 수 있습니다.
append 는 맨 뒤에 추가하고
insert는 인덱스를 지정해 추가할 수 있습니다.
배열의 인덱스는 0번 부터 시작합니다.
array.append("Jin")
// "Lumi", "HojongE", "Charlie", "Asher", "Jin"
array.insert("Milli", at: 2)
//"Lumi", "HojongE", "Milli", "Charlie", "Asher", "Jin"
firstIndex는 앞에서부터
lastIndex는 뒤에서부터 배열의 요소를 탐색을 합니다.
탐색에 성공하면, 인덱스를 반환하고, 실패할 경우 nil을 반환합니다.
array.firstIndex(of: "HojongE") // 1
array.lastIndex(of: "Charlie") // 3
array.firstIndex(of: "Jason") // nil
var pracDictionary : [String: Int] = ["Lumi": 2, "Asher": 3, "Jason": 5]
// 딕셔너리 사용법 - 키로 값을 찾아봅시다.
print(pracDictionary["Lumi"]) // 2
print(pracDictionary["Jin"]) // Jin이라는 키는 없으므로, nil을 반환합니다.
pracDictionary["Hans"] = 2 // "Hans"라는 키로 2를 저장합니다.
print(pracDictionary["Hans"]) // 2
removeValue(forKey:) 를 통해 딕셔너리 요소를 삭제할 수 있습니다.
pracDictionary.removeValue(forKey: "Asher")
print(pracDictionary)
// 키로 Asher를 가지던 값이 삭제됩니다.
//빈 세트를 선언하는 방법
//var names: Set<String> = Set<String>()
//var names: Set<String> = []
// Set은 타입추론을 사용할 수 없습니다. 컴파일러는 Array로 인식하기 때문입니다.
var names: Set<String> = ["Lumi", "Charlie", "Youth", "Asher", "Avery", "Gyu"]
print(names.isEmpty) // false
print(names.count) // 6
요소의 삽입과 삭제에 이용하는 메소드입니다.
names.insert("Jin")
names.insert("Goban")
names.remove("Youth")
var setOne: Set<Int> = [1, 2, 3, 4, 5 ,6]
var setTwo: Set<Int> = [4, 5, 6, 7, 8, 9]
// 교집합
setOne.intersection(setTwo) // 4, 5, 6
// 배타적 논리합
setOne.symmetricDifference(setTwo) // 1, 2, 3, 7, 8, 9
// 합집합
setOne.union(setTwo) // 1 ~ 9
// 차집합
setOne.subtracting(setTwo) // 1, 2, 3
var 동물: Set<String> = ["곰", "호랑이", "참새", "거위", "비둘기"]
var 조류: Set<String> = ["참새", "거위", "비둘기"]
// 동물은 조류의 부분집합인지
동물.isSubset(of: 조류) // false
// 조류는 동물의 부분집합인지
동물.isSuperset(of: 조류) // true
//서로 배타적인지
조류.isDisjoint(with: 동물) // false