[Swift][내배캠] 챌린지반 강의 2회차 - 더 깊게 공부하는 방법

팔랑이·2024년 6월 30일
0

iOS/Swift

목록 보기
41/71
post-thumbnail

digging을 위해, 공식 문서와 swift 오픈소스, xcode에서 option 누르고 자세히 보기 등등을 알려주셨다.

그 일환으로 내주신 과제:

var a: Int? = 3
print(a) // Optional(3)

a를 옵셔널 변수로 선언했다.
옵셔널은 값이 있을 수도, 없을 수도 있는 자료형인데,
3이라는 명확한 값을 넣어줬음에도 불구하고 Optional(3)이라는 문자열이 출력된다.

그럼 어떤 이유로 인해 Optional(3)이 출력되는 것일까?


Swift 오픈소스 - 옵셔널 관련 부분을 보면

@_unavailableInEmbedded
extension Optional: CustomDebugStringConvertible {
  /// A textual representation of this instance, suitable for debugging.
  public var debugDescription: String {
    switch self {
    case .some(let value):
#if !SWIFT_STDLIB_STATIC_PRINT
      var result = "Optional("
      #if !$Embedded
      debugPrint(value, terminator: "", to: &result)
      #else
      _ = value
      "(cannot print value in embedded Swift)".write(to: &result)
      #endif
      result += ")"
      return result
#else
    return "(optional printing not available)"
#endif
    case .none:
      return "nil"
    }
  }
}

Swift에서 Optional은 CustomDebugStringConvertible 프로토콜을 준수하는 것을 볼 수 있다.

print 함수 호출 시 해당 프로토콜에 의해 출력 형식이 정해지는데,
값이 있다면 Optional(value)가,
값이 없다면 nil이 출력되는 것이다.


이처럼 swift의 공식 자료등을 통해 혼자서도 더 깊게 공부할 수 있다.

깃허브 오픈소스 코드 링크
애플개발자 공식문서 링크

Swift 언어 문서와 오픈소스 코드, 그리고 Xcode의 다양한 기능을 적극적으로 활용하여 Swift 언어의 내부 동작을 이해하고, 더 나은 코드 작성법을 습득해 나가야겠다.

profile
정체되지 않는 성장

0개의 댓글