[Swift] Optional 2

Dzeko·2021년 7월 29일

Swift 기본

목록 보기
14/20
post-thumbnail

옵셔널

var carName: String?
carName = nil
carName = "Tank"

아주 간단한 예시

var myFavorite: String?
let num = Int("10")
// 변환할 수 없는경우 컴파일 에러

옵셔널 고급기능 4가지

1. Forced Unwrapping -> 억지로 박스를 까보기

carName = "Tank"
print(carName!)

2. Optional Binding (if let) -> 부드럽게 박스를 까보기 1

if let unwrappedCarName = carName{
    print(unwrappedCarName)
} else {
    print("차가 없어요ㅠ")
}

func printParsedInt(from: String) {
    if let parsedInt = Int(from){
        print(parsedInt)
    } else {
        print("인트로는 파싱이 안된다...")
    }
}
printParsedInt(from: "에딘제코")

🚧 Cyclomatic Complexity가 높아질 수 있음

3. Optional Binding (guard) -> 부드럽게 박스를 까보기 2

func printParsedInt2(from: String) {
    guard let parsedInt = Int(from) else {
        print("인트로는 파싱이 안된다 세호야...")
        return
    }
    print(parsedInt)
}
printParsedInt2(from: "100")

4. nil coalescing -> 박스를 까보고 값이 없으면 디폴트 값을 주기

carName = nil
let myCarName: String = carName ?? "차가 없습니다..."

도전과제

1. 최애 음식이름을 담는 변수를 작성하고 (String?)

var favoriteFood: String?

2. 옵셔널 바인딩을 이용해서 값을 확인해보기

    print(myFavoriteFood)
} else {
    print("입력정보가 아직 없어용")
}

var favorFood: String? = "순대국"
func printMyFood(){
    guard let myFavoriteFood = favorFood else {
        print("입력정보가 아직 없어용...")
        return
    }
    print(myFavoriteFood)
}
printMyFood()

3. 닉네임을 받아서 출력하는 함수 만들기, 조건 입력 파라미터는 String?

//    if let userNickname = nick{
//        print(userNickname)
//    } else {
//        print("받은 닉네임이 없는디요")
//    }
    guard let userNickname = nick else {
        print("받은 닉네임이 없는디요")
        return
    }
    print(userNickname)
}
printNickname(nick: "에딘제코")

전에 작성한 게시글과 합하면서 정리해야 할 필요성!!

0개의 댓글