[Swift] String - #7 Initializer(4) : Converting Other Types to Strings
Converting Other Types to Strings
- LosslessStringConvertible 타입을 입력받아 String을 생성한다.
- LosslessStringConvertible은 무손실 문자열을 나타낼 수 있는 타입이다. 예를 들어 integer value 1050은 문자열 "1050"으로 전체를 나타낼 수 있듯이 이 타입을 원래의 integer value 1050으로 다시 만들 수 있어야 한다.
- [TODO, FIXME] LosslessStringConvertible 의 사용처는 확실하게 모르겠다.ㅠ 아래 타입들이 LosslessStringConvertible 프로토콜을 따르고 있으니 좀 더 확인해봐야겠다.
- TextOutputStreamable 타입을 입력받아 String을 생성한다.
TextOutputStream
- TextOutputStream 프로토콜을 따르는 타입은 print나 dump의 output 인자로 사용되어 표준 출력을 대신하거나 출력 전에 전처리하는 기능을 추가할 수 있다.
TextOutputStreamable
- TextOutputStream을 통해 출력되기 위해서는 TextOutputStreamable 프로토콜을 따라야 한다.
- Swift standard library의 String, Character, Unicode.Scalar 와 같은 타입들은 TextOutputStreamable프로토콜을 따르고 있다.
- TextOutputStreamable프로토콜을 준수하기 위해서는 func write(_ string: String) 을 필수로 구현해야 한다.
- 아래 코드와 같이 ASCIILogger는 write 함수를 구현하여 TextOutputStream 프로토콜을 따르고 있으며 print 함수에 전달 되어 escaped numeric 값을 출력하는 기능을 수행하고 있다.
- CustomStringConvertible, TextOutputStreamable 프로토콜을 준수하는 타입을 입력 받아 String을 생성한다.
CustomStringConvertible
- CustomStringConvertible 프로토콜을 준수하는 유형은 인스턴스를 문자열로 변환할 때 사용할 사용자 정의 텍스트를 표출 할 수 있다.
- CustomStringConvertible 프로토콜을 var description: String 프로퍼티를 통해 인스턴스가 표현할 문자열을 제공한다.
init<Subject>(reflecting subject: Subject)
- CustomDebugStringConvertible, CustomStringConvertible, TextOutputStreamable 을 준수하는 타입을 입력받아 String을 생성한다.
init<Subject>(describing instance: Subject)
init<Subject>(reflecting subject: Subject)
참고 문서
https://developer.apple.com/documentation/swift/losslessstringconvertible
https://developer.apple.com/documentation/swift/customstringconvertible
https://developer.apple.com/documentation/swift/textoutputstreamable