iOS/Swift 문법

[Swift]D9-1 Optional

Chafle 2022. 3. 4. 17:29
반응형

Optional의 기능

값이 존재 해도 존재 안해도 할당 해줄 수 있는 기능입니다.

nil = 없다는 뜻입니다.

 

 

ex. 차 이름을 담는 변수를 작성해라(타입은 String)

'?' 가 optional 기능인데, 값이 위처럼 chacha로 있을 수도 있고 없을 수도 있다. 없으면 nil로 표기한다. 

Optional의 4가지 기능

1. forced unwrapping

2. if let을 이용한 Optional binding

3. guard를 이용한 Optional binding

4. 값이 없을 경우 디폴드 값을 주는 nil coalescing

 

하나하나 예제로 살펴보면

 

1. forced unwrapping 말 그대로 래핑을 까서 강제로 내용물을 보겠다는 말입니다.

print(carName) 의 값은 Optional chacha입니다. 애초에 정의를 옵셔널로 줬기 때문입니다.
이 값을 강제로 까서 내용물을 가져오겠다는 건데 이 때 뒤에 '!'를 붙여주면 
위와같이
print(chaName!) 출력값이 chacha로 가져오게 됩니다.

 


2. if let을 이용하여 강제로 드러내게 하는 것이 아니고 차근차근 한단계씩 보는 방법입니다.

carName에 값이 있으면, 새로 할당한 unwrappedCarName으로 값을 도출하고
else 다르거나 nil값이라면 "Car Name없다" 로 도출하라는 의미입니다.
** 처음 carName이 chacha로 할당 해놓았기 때문에 출력값은 chacha로 출력 됐습니다.
if let에서 else구문은 생략 가능합니다.

2-2 예제로 연습해보기.
func를 받아서 닉네임을 받아 출력하는 함수를 if let을 사용하여 만들어라(타입은 String?)

 

func nickName(name: String?) {

    if let nickString = name{

          print(nickString)

     }else {

          print("닉네임을 정하세요")

}

}

 nickName(name: "chassi")

 

 

 


 

3. 2-1과 같은 문제를 gurad let을 이용하여 표현하기 (여기서는 nil값을 도출하여 else 구문이 출력되도록 하시오)

 

func nickName(name: String?){

    guard let nickString = name

 

else{

     print("닉네임을 정하세요")

return

}

     print(nickString)

}

nickName(name: nil)

 

guard let은 반드시 반환인자 return값이 필요합니다.
Optional 로 추출된 함수, 상수값을 받아낼 수 있습니다.

 

4. nil coalescing // nil값에  디폴트로 값을 미리 설정해 둘 수 있습니다.

let mycarName: String = carName ?? "morning"
이 구문이 carName이 ??(=nil값일때) "morning"을 디폴트 처리 하라는 구문입니다.

 

반응형

'iOS > Swift 문법' 카테고리의 다른 글

[Swift] 10-1 Dictionary  (0) 2022.03.05
[Swift]9-2, Array  (0) 2022.03.05
[Swift] D8, Fuction, inout  (0) 2022.03.03
[Swift]D7-3, Switch구문  (0) 2022.03.02
[Swift] D7-2 for 구문  (0) 2022.03.02