首页 > 解决方案 > 用swift写一个String init

问题描述

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

在我看来,swift 中最惯用的方法是编写一个新的 String 初始化程序。

像这样的东西:

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,并且没有其他明显的 init 我应该调用。

标签: initswift5

解决方案


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

只需调用作为参数self.initr从技术上讲,它是一个方便的初始化程序

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

推荐阅读