typealias MyInt = Int
typealias YourInt = Int
typealias MyDouble = Double
let age: MyInt = 100 //MyInt는 Int의 또 다른 이름.
let year: YourInt = 2080 //YourInt도 Int의 또 다른 이름
//MyInt도 YourInt도 Int이기 때문에 같은 타입으로 취급한다.
year = age
//String, Int, Double 타입을 갖는 튜플
var person: (String, Int, Double) = ("Yagom", 100, 182.5)
//인덱스를 통해서 값을 빼올 수 있다.
print("이름:\(person.0), 나이: \(person.1), 신장: \(person.2)")
person.1 = 99 //인덱스를 통해 값을 할당할 수 있다.
person.2 = 178.5
print("이름:\(person.0), 나이: \(person.1), 신장: \(person.2)")
//String, Int, Double 타입을 갖는 튜플
var person: (name: String, age: Int, height: Double) = ("Yagom", 100, 182.5)
//인덱스를 통해서 값을 빼올 수 있다.
print("이름:\(person.name), 나이: \(person.age), 신장: \(person.height)")
person.1 = 99 //인덱스를 통해 값을 할당할 수 있다.
person.2 = 178.5
print("이름:\(person.0), 나이: \(person.1), 신장: \(person.2)")
(4) 튜플 별칭을 지정해줄 수 있다.
//String, Int, Double 타입을 갖는 튜플
typealias PersonTuple = (name: String, age: Int, height: Double)
let yagom: PersonTuple = ("yagom", 100, 178.5)
let eric: PersonTuple = ("Eric", 150, 183.5)
//typealias를 통해 조금 더 단순하게 표현해볼 수도 있다.
typealias StringIntDictionary = [String: Int]
//키는 String, 값은 Int 타입인 빈 딕셔너리를 생성한다.
var numberForName: Dictionary<String, Int> = Dictionary<String, Int>()
//위 선언과 같은 표현, [String, Int] 는 Dictionary<String, Int>의 축약 표현이다.
var numberForName: [String, Int] = [String, Int]()
//위 코드와 같은 동작을 한다.
var numberForName: StringIntDictionary = StringIntDictionary()
//딕셔너리의 키와 값 타입을 정확히 명시해줬다면 [:] 만으로도 빈 딕셔너리를 생성할 수 있다.
var numberForName: [String: Int] = [:]
//초깃값을 주어 생성해줄 수도 있다.
var numberForName: [String: Int] = ["yagom": 100, "chulsoo": 200, "jenny": 300]
// [1]집합연산!!
let englishClassStudents: Set<String> = ["john", "chulsoo", "yagom"]
let koreanClassStudents: Set<String> = ["jenny", "yagom", "chulsoo", "hana", "minsoo"]
//교집합 : yagom, chulsoo
let intersectSet: Set<String> = englishClassStudents.intersection(koreanClassStudents)
//여집합의 합(배타적 논리합) : john, jenny, hana, minsoo
let symmetricDiffSet: Set<String> = englishClassStudents.symmetricDifference(koreanClassStudents)
//합집합 : minsoo, jenny, john, yagom, chulsoo, hana
let unionSet: Set<String> = englishClassStudents.union(koreanClassStudents)
//차집합 : john
let subtractSet: Set<String> = englishClassStudents.subtracting(koreanClassStudents)
//[2] 포함관계 연산
let 새: Set<String> = ["비둘기", "닭", "기러기"]
let 포유류: Set<String> = ["사자", "호랑이", "곰"]
let 동물: 새.union(포유류) //새와 포유류의 합집합
print(새.isDisjoint(with: 포유류)) //서로 배타적인지 - true
print(새.isSubset(of: 동물)) //새가 동물의 부분집합인가요? - true
print(동물.isSuperset(of: 포유류)) //동물은 포유류의 전체집합인가요? - true
print(동물.isSuperset(of: 새)) //동물은 새의 전체집합인가요? - true