在 swift 中写入一个 String init

Write a String init in swift

在我的代码中,大小为 3 的 [Int] 数组具有特殊含义。我想得到它的字符串表示形式。

在我看来,swift 中最惯用的是编写一个新的字符串初始值设定项。

像这样:

extension String {
    public init(point: [Int]) {
        assert(condition: point.count == 3)
        let r = "x=\(point[0]) y=\(point[1]) z=(point[2])"
        self.init(stringLiteral: r) // what should I write here ?? This feels clumsy ?
    }

这个 init 的结尾应该是什么?我无法分配给 self,也没有其他明显的初始化可以调用。

首先,字符串插值行中缺少一个反斜杠。

只需调用 self.init 并以 r 作为参数。从技术上讲,它是一个 便利初始化程序

extension String {
    public init(point: [Int]) {
        assert(point.count == 3)
        let r = "x=\(point[0]) y=\(point[1]) z=\(point[2])"
        self.init(r)
    }
}