숫자는 Int, Double, Float
참/거짓은 Bool
문자는 String, Character
다양한 값의 묶음은 Tuple로 표현할 수 있다
var age: Int = 18 // Int 타입
var interestRate: Float = 1.2345678910 // Float 타입
print("이자율은 \(interestRate) % 입니다")
// 출력값: 이자율은 1.2345679 % 입니다
var interestRate: Double = 1.2345678910123456789 // Double 타입
print("이자율은 \(interestRate) % 입니다")
// 출력값: 이자율은 1.2345678910123457 % 입니다
두 유형 모두 적합한 상황에서는 Double를 사용하는 것이 좋다
var isMan: Bool = true // Bool 타입
var emptyString: String = ""
var anotherEmptyString = String()
var variableString = "Horse"
variableString += " and carriage"
print(variableString)
// 출력값: "Horse and carriage"
let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
let catString = String(catCharacters)
print(catString)
// Prints "Cat!🐱"
let http404Error: (Int, String) = (404, "Not Found")
let (justTheStatusCode, _): (Int, String) = http404Error
print("The status code is \(justTheStatusCode)")
// 출력값: "The status code is 404"
// 튜플 값에 접근하려면 순서를 알고 있어야 합니다.
print("The status code is \(http404Error.0)")
// 출력값: "The status code is 404"
print("The status message is \(http404Error.1)")
// 출력값: "The status message is Not Found"
// 각 엘레먼트에 이름을 붙일 수 있습니다.
let http200Status: (Int, String) = (statusCode: 200, description: "OK")
var anyArray: [Any] = [1,"Hi", true]
var anyValue: Any = 1000
anyValue = "어떤 타입도 수용 가능"
anyValue = 12345.67
// 컴파일 에러
let doubleValue: Double = anyValue // 🚨 에러 메시지: Cannot convert value of type 'Any' to specified type 'Double'
// Any 타입에 Double 값을 넣는 것은 가능하지만
// Any는 Double 과 엄연히 다른 타입이 때문에
// Double 타입의 값에 Any 타입의 값을 할당할 때에는 명시적으로 타입을 변환해 주어야 합니다.
// 타입 변환은 이후 강의에서 배우니 타입 변환이 필요하구나까지 알고 계시면 됩니다!
// 생성자로 배열 만들기
var ages = Array<Int>()
print(ages)
// 출력값: []
var numbers = [Int]()
print(numbers)
// 출력값: []
var zeroes = [Int](repeating: 0, count: 10)
print(zeroes)
// 출력값: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
// 배열의 원소 개수
numbers = [5,6]
print("numbers 배열에 있는 value 개수는 \(numbers.count) 개 입니다")
// 출력값: "numbers 배열에 있는 value 개수는 1 개 입니다
// 배열 마지막에 value 추가하기
numbers.append(3)
// 현재 numbers = [5,6,3]
numbers[0] = 9
// 현재 numbers = [9,6,3]
numbers.insert(5, at: 1)
// 현재 numbers = [9,5,6,3]
let secondValue = numbers.remove(at: 1)
// 현재 numbers = [9,6,3]
// secondValue = 5
let lastValue = numbers.removeLast()
// 현재 numbers = [9,6]
// lastValue = 3
let firstValue = numbers.removeFirst()
// 현재 numbers = [6]
// firstValue = 9
// numbers 배열이 비었는지 확인
let isNoNumber = numbers.isEmpty
// isNoNumber = false
numbers.removeAll()
// 현재 numbers = []
// 배열 초기화
numbers = []
// 현재 numbers = []
var letters = Set<String>()
// 값 넣기
letters.insert("Classical Music")
// 초기화
letters = []
var favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
favoriteGenres = ["Rock", "Classical", "Hip hop"]
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]
var namesOfIntegers: [Int: String] = [:]
namesOfIntegers[16] = "sixteen"
// 초기화
namesOfIntegers = [:]
var airports: [String: String] = ["YYZ": "Toronto Pearson", "DUB": "Dublin"]
airports["APL"] = "Apple International"
// airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin", "APL": "Apple International"]
// key에 매칭된 value 값 초기화
airports["APL"] = nil
// 딕셔너리 airports에 있는 값의 수
print(airports.count)
// 출력값: 2
// 딕셔너리 airports에 있는 모든 key들
print(airports.keys)
// ["YYZ", "DUB"]
// 해당 key가 있다면 value를 덮어쓰고, 덮어쓰기 전 기존값울 반환
let newYyz = airports.updateValue("Hello YYZ", forKey: "YYZ")
print(newYyz) // 출력값: Optional("Toronto Pearson")
print(airports["YYZ"]) // 출력값: Optional("Hello YYZ")
// 해당 key가 없다면 그 key에 해당하는 value에 값을 추가하고 nil을 반환
let newApl = airports.updateValue("Hello APL", forKey: "APL")
print(newApl) // 출력값: nil
print(airports["APL"]) // 출력값: Optional("Hello APL")
enum CompassPoint {
case north
case south
case east
case west
}
// 한 케이스 선언 방법
var directionToHead = CompassPoint.west
directionToHead = .east
// 활용 예시 1
directionToHead = .south
switch directionToHead {
case .north:
print("북쪽")
case .south:
print("남쪽")
case .east:
print("동쪽")
case .west:
print("서쪽")
}
// 출력값: "남쪽"
// allCases
enum Beverage: CaseIterable {
case coffee, tea, juice
}
let numberOfChoices = Beverage.allCases.count
print("\(numberOfChoices) 잔 주문 가능합니다.")
// 출력값: 3잔 주문 가능합니다```
글이 잘 정리되어 있네요. 감사합니다.