반응형
옵셔널 소개
// Optional??
var name: String="Joon"
var dogName:String="Mozzi"
var carName:String=???
이름을 정의 할때, 강아지이름을 정의할 때 사용하는 선언을 보자
만약 자동차이름을 할당해야하는데 아직 내가 자동차가 없다면?
없는 것에 대해 표현하려고 하니 애매해진 경우가 있다.
그런 것은 Boolean을 통해 유무를 먼저 체크를 할 수 있지만. 그것은 코드를 깔끔하지 못하게 만드는 요소이다.
내가 없는 것을 어떻게 표현할 것인가?
어떠한 값을 갖고있지 않는 경우 혹은 반대를 모두 표현할 수 있다.
존재하지 않음은 nil로 표현할 수 있다.
Optional은 박스에 비유가능
박스에 value가 있으면 그대로 표현, 없으면 nil로 표현
옵셔널의 사용
// 아주 간단한 과제
// 1. 여러분이 최애하는 영화배우의 이름을 담는 변수를 작성해주세요(타입 String?)
// 2. let num = Int("10") -> 타입은 뭘까요?
print("===> 1번 문제")
var actorName: String? = nil //없을 수도 있음
print("===> 2번 문제")
// 정수
let num = Int("10") //문자지만 변환하면 가능할수도? 하는 케이스
//let num = Int("10하이")
//문자지만 변환하면 하지않은 케이스
고급기능 4가지
// Forced unrapping
// Optional binding (if let)
// Optional binding2 (guard)
// Nill coalescing
import SwiftUI
var carName: String? = "땡크"
//고급기능 4가지
// Forced unrapping
// Optional binding (if let)
// Optional binding2 (guard)
// Nill coalescing
// 영어로 공부하는 이유 : 공부하다가 막히는 경우 영어로 검색하면 보다 다양한 루트를 발견가능
// Forced unrapping > 박스안에 있는 값을 꺼내서 사용할 때, 강제로 여는 것
// Optional binding (if let) > 부드럽게 박스를 까는 방법 1
// Optional binding2 (guard) > 부드럽게 박스를 까는 방법 2
// Nill coalescing > 박스를 까봤더니 값이 없으면 디폴트 값을 줘보자 (중고나라 사기 -> 벽돌)
//print(carName)
//Optional("땡크")
//print(carName!)
//"땡크"
//carName = nil
//print(carName!)
//error: Execution was interrupted, reason: EXC_BREAKPOINT (code=1, subcode=0x18f2ea5d8).
// !로 강제로 언레핑이 가능하지만 안에 nil이라면 경고가 뜬다.
//if let unwrappedCarName = carName {
// print(unwrappedCarName)
//} else {
// print("Car Name 없다.")
//}
// -----> 함수로 사용해보기 , 파싱하고 캐스팅하기
//func printParsedInt(from: String) {
// if let parsedInt = Int(from) {
// print(parsedInt)
// } else{
// print("Int로 컨버팅안된단다")
// }
//}
//printParsedInt(from: "100")
//printParsedInt(from: "하이 데얼")
//
//func printParsedInt(from: String) {
// if let parsedInt = Int(from) {
// print(parsedInt)
// if parsedInt > 0 {
// print(parsedInt)
// } else{
//
// }
// } else{
// print("Int로 컨버팅안된단다")
// }
//}
//레벨이 너무 많아지면 복잡해진다.
//
//func printParsedInt(from: String){
// guard let parsedInt = Int(from) else {
// print("Int로 컨버팅안된단다")
// return
// }
// print(parsedInt)
//}
//printParsedInt(from: "100")
//
//
//let myCarName = carName ?? "모델 S"
//carName이 nil 이라면 모델 S 라는 디폴트 값을 가지게 된다.
반응형
'모바일앱 > Swift' 카테고리의 다른 글
Collection - Set (0) | 2021.10.10 |
---|---|
Collection - Dictionary (0) | 2021.10.10 |
Collection - Array (0) | 2021.10.09 |
옵셔널 도전과제 (0) | 2021.10.08 |
함수의 고급기능(1. 오버로드 2. In-out parameter 3. 함수안에 함수를 넣기) (0) | 2021.10.06 |
기본함수사용능력 테스트 (0) | 2021.10.06 |
함수 응용하기 (0) | 2021.10.05 |
함수 기본 (0) | 2021.10.04 |