의문 : 어떤 코드 뭉치에 의해 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에 관련 된 내용이다.
'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 |