Почему я могу изменить константу let с параметром inout при использовании try?

Это не удастся скомпилировать с ошибкой:

Неизменное значение self.constantValue не должно передаваться

class Test {
    let constantValue: String = ""


    init() {
        Test.makeABC(&constantValue)
    }

    static func makeABC(_ string: inout String) {
        string = "ABC"
    }
}

Однако это скомпилирует и фактически изменит константу let.

class Test {
    let constantValue: String = ""


    init() {
        try? Test.makeABC(&constantValue)
    }

    static func makeABC(_ string: inout String) throws {
        string = "ABC"
    }
}

Кто-нибудь знает, почему это работает, и если это предполагаемое поведение?

Я подал ошибку https://bugs.swift.org/browse/SR-8368

0 ответов

Другие вопросы по тегам