Почему 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, поскольку я не вижу для этого причин.


person Boon    schedule 13.06.2015    source источник
comment
возможный дубликат Зачем создавать неявно развернутые опции?   -  person Shripada    schedule 13.06.2015
comment
Не дубликат - я видел этот пост, прежде чем спросить об этом. Я спрашиваю, почему константу нужно объявлять таким образом в SwiftyJSON.   -  person Boon    schedule 13.06.2015
comment
Я голосую за то, чтобы закрыть это, поскольку в первую очередь основано на мнении. В то время как пользователь может добавить комментарий о том, почему или почему вы не должны делать это в общем случае, вы спрашиваете о конкретном случае из конкретной библиотеки. Если автор SwiftyJSON не остановится и не предложит Божий ответ, любой другой ответ может быть не чем иным, как чистой догадкой.   -  person nhgrif    schedule 13.06.2015
comment
Изучение чужого кода является законной деятельностью по кодированию и обучению, и полезно задавать вопрос о том, почему определенные вещи выполняются определенным образом. Чрезмерно рьяное обобщение о том, что на любой вопрос такого рода можно получить ответ только в виде чистой гипотезы, не только неверно (и кто сказал, что гипотеза не имеет ценности?), но и отговаривает от задавания хороших вопросов. Я призываю вас пересмотреть свою веру и ущерб, который она нанесет сообществу SO.   -  person Boon    schedule 14.06.2015


Ответы (1)


Ну может я ошибаюсь, конечно лучше спросить у автора кода. Но вот мои предложения в любом случае:

  1. Обвиняя фиксацию, мы видим, что изменения были сделаны 6 октября 2014 года, и, поскольку мы знаем, что Swift только что выпущен, могут быть некоторые предупреждения компилятора или, возможно, ошибки:

введите здесь описание изображения

  1. На самом деле, написав Int! вместо Int, мы заставляем компилятор генерировать тип ImplicitlyUnwrappedOptional<Int> (и зная этот факт, мы могли бы вернуться к пункту 1):

    public let x: Int  = 1
    public let y: Int! = 2
    
    println(x.dynamicType)
    println(y.dynamicType)
    

    Выходы:

    Swift.Int
    Swift.ImplicitlyUnwrappedOptional<Swift.Int>
    
person ilidar    schedule 16.07.2015
comment
Спасибо за расследование - какое предупреждение компилятора, по вашему мнению, требует этого. - person Boon; 17.07.2015