A
A
Abra Kadabra2016-11-04 16:13:11
Swift
Abra Kadabra, 2016-11-04 16:13:11

What are the "?" and "!" near variables in Swift?

The documentation talks about "wrapping variables".
What does this even mean?
How do you know where to use them?
As I understand it, where a variable can be null, it is necessary to wrap it.
But after all, all the variables that the user enters may turn out to be empty, so I check it right away, before processing.
So why is it?

seven? = 7
eight! = 8

Answer the question

In order to leave comments, you need to log in

2 answer(s)
D
DevMan, 2016-11-04
@Jmaster

let foo: String! = "зуб даю что эта переменная содержит значение, и восклицательный знак указывает на это"
print(foo)  // тут восклицательный знак не нужен ибо мы уверены

var bar: String? = "переменная может содержать значение, а может и не содержать, знак вопроса на это указывает"
print(bar!) // восклицательный знак нужен для доступа к значению такой переменной

B
briahas, 2016-11-10
@briahas

I'll try to expand on the answer:

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

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

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

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question