23.01.03 학습일기
15. Optional_3
// if let(var)
// guard let(var)
var myAge1: Int? = 20
var myAge2: Optional<Int> = 40
myAge1이 nil이 아닐 경우, 그냥 Int 값으로 처리 가능
따라서, myAge1은 unwrapping 가능
var sum = 0
if let age = myAge1 {
sum+age+1 // 21
}
그러나, myAge1이 nil일 경우, myAge1은 unwrapping 할 수 없기 때문에 연산 불가
var sum = 0
myAge1 = nil // nil
if let age = myAge1 {
sum+age+1 // 21
} // 0
if let(var)과 형식은 똑같은데 동작되는 방식이 다른 것 = guard let(var)
guard let age = myAge1 else { // 값을 가져오지 못했을 때
// guard 문은 중단시키고자 할 때 사용
return // 해당되는 코드블럭 끝남을 의미
//fatalError("여기는 nil이 나오면 안 되는 부분입니다.") // 앱 자체를 종료시키면서 에러 표시를 나타내는 기능, 왜 에러 발생했는지 써주기
}
age // age 가져왔을 때 처리는 밑에 씀
16. Operators_1
var (age1, age2) = (10, 20)
let newStr = str1 + " " + str2
var 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 = 8
var num2 = 3
num1 % num2 // 2
// Double 타입
var num3: Double = 8
var num4: Double = 3
num3.truncatingRemainder(dividingBy: num4) //2
!! num3.remainder(dividingBy: num4) // -1이 나옴 => why?
==> num3 / num4를 하면 2.66666이 나오는데, 몫은 가까운 정수로 표현되여 3이 된다.
이 때, 3X3(num4)=9가 되어 8(num3)보다 1이 커지므로, -1이 출력된다.
17. Operators_2
var a = "a"
var b = "b" // 문자 - 대소 비교 가능
if a>b {
print("true")
}
else {
}
// Range Operator
// 범위 0...5
for 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() - false
isGreen - false
18. 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("가") // 44032
String(44032, radix: 16) // ac00
UnicodeScalar("힣") // 55203
String(55203, radix: 16) // d7a3
if inputValue >= "\u{ac00}" && inputValue <= "\u{d7a3}" // 0 에서 9 {
print("한글")
} else{
print("한글 아님")
}
댓글을 작성해보세요.