의문 : 어떤 코드 뭉치에 의해 Optional(3)으로 출력이 되는가?

      a. 그 코드 뭉치는 어떻게 동작하여 print 되는가.

1> var num: Int? = 3
num: Int? = 3
2> print(num)
Optional(3)

 

 


 

그래서 옵셔널(Optional)이 뭔데?

예전 포스팅에서도 다뤘지만, 복습 차원에서 한 번 잡고가자.

 옵셔널(Optional)은 값이 있을 수도 있고 없을 수도 있는 변수의 데이터 타입임

 

var num: Int? = 3

위처럼 변수를 선언할 때 "?"를 사용하여 표현. 변수의 값을 할당하지 않았을 경우? -> nil을 반환

이럴경우는 언래핑을 해주면 되겠지?

 

옵셔널 구조

옵셔널 구조

옵셔널은 다음과 같이 두 가지 상태를 가질 수 있음

  • 값이 없는 경우 : case none
  • 값이 있는 경우 : case some(값)

 

그래서 옵셔널은 어떻게 동작 하는건데?

CustomStringConvertible Protocol

 

옵셔널 값의 문자열 표현은 'CustomStringConvertible' 프로토콜을 통해 정의 됨

이를 통해 인스턴스를 사람이 읽기 쉬운 형식으로 변환할 수 있으며,

옵셔널 타입도 이 프로토콜을 준수하여 값을 명확하게 표현할 수 있는것!

 

+++(description에 대해 찾고 싶어서 엄청 찾아봤는데... 안 나오는게 맞았음 ㅠㅠ(오히려 찾았으면 큰일날 뻔))

 

https://developer.apple.com/documentation/swift/customstringconvertible

(어쩐지 여기서 더 깊게 파 볼수록 답이 안 나오더라..)

 

 

튜터님이 힌트주신 링크(swift/stdlib/public/core/Optional.swift at main · swiftlang/swift (github.com))

에서 비슷한 부분을 찾긴 했는데 Debug에 관련 된 내용이다.

CustomDebugStringConvertible

 

 

 

'Swift' 카테고리의 다른 글

Xcode 내 휴대폰 연동  (0) 2024.07.01
Swift Delegate Pattern  (0) 2024.06.30
CoW (Copy - on - Write)  (0) 2024.06.27
Swift LifeCycle - 추가 예정 (미완)  (1) 2024.06.26
Swift preview  (0) 2024.06.25