인프런 커뮤니티 질문&답변

송종환님의 프로필 이미지
송종환

작성한 질문수

UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>

Optionals_3

if 언래핑에 대해 질문이 있습니다

작성

·

165

1

var a: Int? = 10

 

if a! = nil {

print(a)

}

if let hasNumber = a

print(hasNumber)

}

여기서 변수a는 nil값을 받을수있도록 ? 옵셔널되어있고

아래에서 if문을 통해 nil값이 아닐때만 출력되도록 설정됬다고 생각하는데, 이 자체는 그럼 옵션을 제한한 언래핑이 아닌건가요?

아래에서 if let을 활용해서 다시 언래핑해주는 이유가 궁금합니다.

그리고 if let 이라는 함수자체가 언래핑을 의미한다고 생각하면 되는건지도 궁금합니다!

 

답변 1

1

iOS Developer - 이정님의 프로필 이미지
iOS Developer - 이정
지식공유자

if a != nil {

 print(a!)

}

제가 설명드린 문법은 위와 같고

if를 사용한 이유는 force unwrapping을 사용할 때 if로 nil체크를 하면 안전하다를 보여주기 위한 부분이라고 생각하시면 됩니다.

 

그리고

unwrapping하면  변수a 가  Int타입으로 바뀌는게 아닙니다.

그냥 Int타입으로 된 새로운 값이 새로 생성되서 그걸 사용할 수 있게 되는 것입니다.

그러므로 a는 타입이 변하지 않고 계속 옵셔널Int입니다.

 

if let은 unwrapping해서 그냥 Int타입의 값을 가져올 수 있는지 없는지 체크하는 기능중에 하나 입니다.

가져올 수 있다면 hasNumber에 값이 들어오고 밑에 코드블럭이 실행되고

가져올 수 없는 nil상태면  if let 구문은 아예 실행되지 않습니다.

 

 

 

송종환님의 프로필 이미지
송종환
질문자

답변 감사합니다!

송종환님의 프로필 이미지
송종환
질문자

답변 감사합니다!

송종환님의 프로필 이미지
송종환
질문자

답변 감사합니다!

송종환님의 프로필 이미지
송종환

작성한 질문수

질문하기