Flutter 개발 상자

스위프트 기초 문법 - 5일차 / Unwrap 옵셔널변수 본문

개인공부/IOS공부

스위프트 기초 문법 - 5일차 / Unwrap 옵셔널변수

망고상자 2022. 1. 11. 22:25
728x90

좀 난해한... 첫번째 고비인 문법같다.

 

옵셔널이란 값이 있는지 없는지 모른다는거다.

일단 nil 이라는것부터 짚고 넘어가자면 null과 동일한 표현이라고 한다.

그렇다면 옵셔널이라는건 코틀린의 nullable과 비슷하다고 볼수도 있겠다.

 

if let 문법이란? 언랩핑을 해주는 구문으로써

ohterVariable 변수에 래핑변수인 someVariable을 넣을 수 있으면 if구문을 실행하라는 것이다.

else구문은 생략해도 되고, if문 밖에서 otherVariable변수에 접근할 수 없다.

 

 

다음은 또다른 언래핑 방식인 guard let 방식이다.

if let과는 다르게 무조건 else구문이 들어가야 하며 else구문에는 return과 같은 상위 코드블록을 종료하는 키워드가 들어가야한다.

그렇기 때문에 특정 코드 블록내에서만 사용 가능하고 메인 코드블록에서는 사용이 불가능하다.

guard let의 장점은 특정 블록내에서 계속 지역변수로 사용이 가능하다는 점이다.

 

 

일단 어느정도 이해는 했는데 이걸 왜쓰지? 라는 의문이 좀 남는다.

그리고 언래핑이라는 방식 자체가 너무 비효율적이라는 생각이 든다.

코틀린에서는 ?를 붙여서 안전하게 해당 변수의 메소드를 실행하거나

let을 통해서 간단하게 널체크를 하고 사용할 수 있다.

 

하지만 스위프트는 언래핑이라는 다소 귀찮은 작업을 해주어야 하고 저 작업을 해주지 않으면

Int? 타입은 아예 연산을 못한다던지 하는 일반적인 변수타입의 기능을 상실해버린다.

 

일단 이부분은 잘 기억했다가 어떻게 활용되는지 나중에 잘 봐야겠다.

728x90