Description and CustomStringConvertible

2019-06-18
Swift

안녕하세요. 도미닉입니다.

오늘은 Description 과 CustomStringConvertible 에 대해서 알아보겠습니다.

Description 이란?

한글로 번역하면 설명이라는 뜻입니다.

그렇다면 뭔가를 설명한다고 이해할 수 있겠습니다.

Description 은 언제 필요할까?

위에 예제 소스가 실행되면 “Point(x: 21, y: 30)” 이라는 문자열이 출력됩니다.

구조체의 이름 뒤에 괄호 안에 프로퍼티들이 차례로 출력되는 구조입니다.

이렇게 정형화된 구조말고 다르게 인스턴스의 정보를 출력하고 싶을 때가 있을 것입니다.

이럴 때 사용할 수 있는 것이 Description 입니다.

Description 사용 방법은?

위에 소스가 실행되면 description 에서 정의한 (x 좌표, y 좌표) 형식으로 출력이 됩니다.

위에서 우리가 변수명을 바로 print 하던 것과는 달리 변수명 뒤에 .description 을 붙여줘야합니다.

이럴 때 사용할 수 있는 것이 CustomStringConvertible 입니다.

CustomStringConvertible 이란?

CustomStringConvertible 은 프로토콜입니다.

CustomStringConvertible 을 채택하게 되면 저희가 위에서 선언해주었던 description 을 struct 변수를 print 할 때 출력해줍니다.

CustomStringConvertible 사용 방법은?

CustomStringConvertible 은 구조체와 클래스 등에서 변수를 출력할 때 description 을 출력하도록 해주는 프로토콜입니다.

위에 예제에서 print(p) 를 해주면 첫번째 예제에서 출력되던 “Point(x: 21, y: 30)” 이 출력되지 않고 (21, 30) 이 출력됩니다.

이를 잘 사용하면 별도로 프로퍼티를 선언하지 않아도 인스턴스의 정보를 알 수 있을 것입니다.

description 을 출력하는 방법 두가지

위에 예제에서 보셨듯이 인스턴스의 상수나 변수 이름을 바로 출력해도 description 이 출력됬습니다.

이 방법과 String(describing: p) 을 출력해주어도 description 이 출력됩니다.

정리

description 과 CustomStringConvertible 에 대해서 알아봤습니다.

글 읽어주셔서 감사합니다.

참고

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