Для чего нужны «?» и «!» возле переменных в Swift?

В документации говорится об "оборачивании переменных".
Что это вообще значит?
Как понять, где их использовать?
Как я понял, там, где переменная может быть null необходимо ее оборачивать.
Но ведь все переменные, которые пользовать вводит могут оказаться пустыми, для того я и проверяю это сразу, до обработки.
Так зачем это?
seven? = 7
eight! = 8
  • Вопрос задан
  • 3257 просмотров
Решения вопроса 1
DevMan
@DevMan
let foo: String! = "зуб даю что эта переменная содержит значение, и восклицательный знак указывает на это"
print(foo)  // тут восклицательный знак не нужен ибо мы уверены

var bar: String? = "переменная может содержать значение, а может и не содержать, знак вопроса на это указывает"
print(bar!) // восклицательный знак нужен для доступа к значению такой переменной
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
briahas
@briahas
ObjC, Swift, Python
Попробую расширить ответ:

class MyClass {
    let myConst = "тут не оборачиваем, ибо значение будет сразу при инициализации класса, инфа соточка"
    var myFoo = "тут - тоже будет, по этому не оборачиваем"

// а тут нет значения при инициализации класса -> будет ошибка.
    var myBar: String  
    
// придется - либо оборачивать и тут... и в дальнейшем,
    var myBar: String?

//                 - либо писать init метод
    var myBar: String    
    func init() {
         myBar = "вот теперь  переменная не пустая - не оборачиваем"
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы