본문 바로가기
개린이 이야기

2022년 02월 10일의 이야기

by iOS 개린이 2022. 2. 10.

1. swift deep dive(optionals)

-var player1: string? = nil

 player1 = "지호"

 print(player1)  출력: optionals(지호)

 print("player1"!) 출력: 지호

위와 같이 변수의 데이터 유형 뒤에 ?를 적으면 선택사항이 가능해진다. 선택사항은 지금 변수 유형을 문자열로 할지, 아무것도 저장하지 않은 상태인 것으로 할 지 선택할 수 있다는 것이다. (이 변수에는 값이 들어갈 수도 있고, 아닐 수도 있어!)

 

- print(player1)  출력: optionals(지호)

  print("player1"!) 출력: 지호

Optional에 대해 보다보면, 많은 곳에서 wrapping이라는 개념이 나옵니다. Optional 타입은 기본적으로 wrap되어 있는 상태입니다. 즉, Optional로 선언된 변수들은 값이 있는 것인지, nil인 것인지 wrap되어 있어서 모르는 상태입니다. 그렇기 때문에(컴파일러 입장에서는 변수가 nil일 수도 있기 때문에) wrap된 상태에서는 설령 변수에 value값이 있다고 하더라도 바로 value가 출력되지 않습니다. 위의 출력물과 같이 뒤에 !를 붙여주어야 올바른 "지호"를 출력할 수 있다. 변수명 뒤에 !가 붙으면 optional을 unwrap 시키는 것이다.

 

-swift에서는 기본적으로 변수 선언시 nil값이 들어가는 것을 허용하지 않는다. 

 swift에서 nil은 optional 변수 이외에서 사용할 수 없다. 또한 nil값은 따로 초기화하지 않아도 기본으로 설정된다.

 ex) var optinalstring: string?   <-- 이 값은 기본적으로 nil

 

- number의 경우, 느낌표에 의해 Optional 값이 자동으로 unwrap됩니다. unwrap된 상태에서 값을 출력하면 런타임 에러가 발생합니다. 그러므로 일반적으로 위처럼 number가 unwrap된 상태로 print하도록 놔두기보다는 if를 통해 값이 nil인 경우를 체크하고 출력을 합니다.

ex) let number: string! = nil

     if number != nil {

       print("number")

     }

'개린이 이야기' 카테고리의 다른 글

2022년 2월 16일의 이야기  (0) 2022.02.16
2022년 02월 11일의 이야기  (0) 2022.02.11
2022년 02월 09일의 이야기  (0) 2022.02.09
2022년 02월 08일의 이야기  (0) 2022.02.08
용어 및 기본 개념  (0) 2022.02.06