String 自定义格式化

比如一个自定义结构,在打印时,print 会按照 Swift struct 的默认格式打印 Person 值

struct Person {
    let name: String
    let place: String
}

print("Hi, \(Person(name: "Geralt", place: "Rivia"))")

如果要自定义Person的打印结果,可以 扩展String.StringInterpolation,样例代码:

extension String.StringInterpolation {
    mutating func appendInterpolation(_ person: Person) {
        // 调用的 `appendLiteral(_ literal: String)` 接受 `String` 参数
        appendLiteral("\(person.name) of \(person.place)")
    }
}

这样,打印出来的Person会变成

print("Hi, \(Person(name: "Geralt", place: "Rivia"))")

Hi, Geralt of Rivia