애플 공식문서에서의 CustomStringConvertible
에 대한 정의
인스턴스를 문자열로 변환할 때 사용가능한 자체적인 표현을 제공할 수 있습니다.
해당 프로토콜을 준수하려면 description
프로퍼티를 구현해야 한다.
CustomStringConvertible
프로토콜을 채택하지 않은 경우 표준 라이브러리에서 제공하는 기본 표현을 사용한다.
struct Point {
let x: Int, y: Int
}
let p = Point(x: 21, y: 30)
print(p)
// Prints "Point(x: 21, y: 30)"
CustomStringConvertible
프로토콜을 채택하고 준수한 경우 사용자가 지정한(만든) 표현을 사용하게 된다.
extension Point: CustomStringConvertible {
var description: String {
return "(\(x), \(y))"
}
}
print(p)
// Prints "(21, 30)"
포커게임 프로젝트에서 enum에 해당 프로토콜을 채택해서 case의 rawValue를 출력하려고 사용했었다. 처음에 case와 매칭한 값을 꺼내오는 함수를 생각했다가 다른 방법이 있을것 같아서 검색(삽질)해서 겨우 찾은 프로토콜..
enum Suit: String, CustomStringConvertible {
case spade = "s"
case diamond = "d"
case heart = "h"
case clover = "c"
var description: String {
return "\(self.rawValue)"
}
}
출처 : https://developer.apple.com/documentation/swift/customstringconvertible