Напишите строковую инициацию в swift - PullRequest
0 голосов
/ 28 января 2020

В моем коде массив [Int] размера 3 имеет особое значение. Я хочу получить его строковое представление.

Самый идиоматический c в 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 ?
    }

Что должно go в конце этого init? Я не могу присвоить self, и нет другого очевидного init, который я должен вызвать.

1 Ответ

1 голос
/ 28 января 2020

Прежде всего, в строке интерполяции строк отсутствует обратная косая черта sh.

Просто вызовите 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)
    }
}
...