Почему SwiftyJSON создает неявно развернутый необязательный параметр для своих констант?
В коде SwiftlyJSON он определяет следующие константы, используя принудительное развертывание:
///Error code
public let ErrorUnsupportedType: Int! = 999
public let ErrorIndexOutOfBounds: Int! = 900
public let ErrorWrongType: Int! = 901
public let ErrorNotExist: Int! = 500
Какова цель объявления констант как неявно развернутых необязательных здесь?
Примечание: я не спрашиваю, почему или когда использовать неявно развернутый файл, а скорее почему он используется в SwiftyJSON, поскольку я не вижу причин для этого.
1 ответ
Ну, может, я ошибаюсь, конечно, лучше спросить у автора кода. Но вот мои предложения в любом случае:
- Обвиняя коммит, мы видим, что изменения, внесенные 6 октября 2014 года, и, как мы знаем, только что выпущенный Swift, могут содержать некоторые предупреждения компилятора или ошибки:
На самом деле, написав
Int!
вместоInt
мы заставляем компилятор генерироватьImplicitlyUnwrappedOptional<Int>
type (и, зная этот факт, мы можем вернуться к пункту 1):public let x: Int = 1 public let y: Int! = 2 println(x.dynamicType) println(y.dynamicType)
Выходы:
Swift.Int Swift.ImplicitlyUnwrappedOptional<Swift.Int>