23.01.03 학습일기
15. Optional_3// if let(var)// guard let(var)var myAge1: Int? = 20var myAge2: Optional<Int> = 40myAge1이 nil이 아닐 경우, 그냥 Int 값으로 처리 가능따라서, myAge1은 unwrapping 가능var sum = 0if let age = myAge1 { sum+age+1 // 21} 그러나, myAge1이 nil일 경우, myAge1은 unwrapping 할 수 없기 때문에 연산 불가var sum = 0myAge1 = nil // nilif let age = myAge1 { sum+age+1 // 21} // 0if let(var)과 형식은 똑같은데 동작되는 방식이 다른 것 = guard let(var)guard let age = myAge1 else { // 값을 가져오지 못했을 때 // guard 문은 중단시키고자 할 때 사용 return // 해당되는 코드블럭 끝남을 의미 //fatalError("여기는 nil이 나오면 안 되는 부분입니다.") // 앱 자체를 종료시키면서 에러 표시를 나타내는 기능, 왜 에러 발생했는지 써주기}age // age 가져왔을 때 처리는 밑에 씀16. Operators_1var (age1, age2) = (10, 20)let newStr = str1 + " " + str2var arr1 = ["a", "b", "c"]var arr2 = ["d", "e", "f"]var newArr = arr1 + arr2 // 배열도 합치기 가능, ["a", "b", "c", "d", "e", "f"]// String이나 Array 같은 경우 타입 같으면 +연산 했을 때 이어붙여서 출력됨//Remainder Operator 나머지 값 알려주는 연산자 % -> Int 타입만 가능!!!var num1 = 8var num2 = 3num1 % num2 // 2// Double 타입var num3: Double = 8var num4: Double = 3num3.truncatingRemainder(dividingBy: num4) //2!! num3.remainder(dividingBy: num4) // -1이 나옴 => why?==> num3 / num4를 하면 2.66666이 나오는데, 몫은 가까운 정수로 표현되여 3이 된다.이 때, 3X3(num4)=9가 되어 8(num3)보다 1이 커지므로, -1이 출력된다.17. Operators_2var a = "a"var b = "b" // 문자 - 대소 비교 가능if a>b { print("true")}else { print}// Range Operator// 범위 0...5for index in 0..<5 { print(index)}let names = ['"kim", "lee", "min"]for index in 0..<names.count) { print(names[index]}for name in names { print(name) // 범위 지정 하지 않아도 처음부터 끝까지 도는 것}for name in names[1...] // 1부터 끝까지 쓴다는 의미for name in names[...3] // 처음부터 3까지 쓴다는 의미&& AND|| OR.toggle()은 해당 성질을 반대로 바꿔버림 - 원본 자체가 바뀜isGreen.toggle() - falseisGreen - false18. Unicode// 문자 -> 내부적으로 특정한 코드 값(16진수)\u안에 코드 값 넣으면 유니코드 나옴"a""\u{61}" // "a""가를" 유니코드로 변경하고 싶다면?UnicodeScalar("가") // 44032-But 이것은 10진수유니코드는 16진수이기 때문에, 44032를 16진수로 바꾸기 위해서는?String(44032, radix: 16) // AC00// 숫자만 입력let inputValue = "ㄱ"if inputValue >= "\u{30}" && inputValue <= "\u{39}" // 0 에서 9 { print("숫자")} else{ print("숫자 아님")}// 한글만 입력UnicodeScalar("가") // 44032String(44032, radix: 16) // ac00UnicodeScalar("힣") // 55203String(55203, radix: 16) // d7a3if inputValue >= "\u{ac00}" && inputValue <= "\u{d7a3}" // 0 에서 9 { print("한글")} else{ print("한글 아님")}