/ Align = "left" / "(znak zapytania) i"!"(wykrzyknik)
Rozumiem, że w Swift wszystkie zmienne muszą być ustawione z wartością, i że za pomocą opcji możemy ustawić zmienną, która ma być ustawiona na nil
początkowo.
Nie rozumiem, co robi ustawienie zmiennej z !
, ponieważ miałem wrażenie, że to "rozpakowuje" wartość z opcji. Myślałem, że robiąc to, gwarantujesz, że jest wartość do rozpakowania w tej zmiennej, dlatego na IBActions i takie widzisz go używane.
Tak po prostu, do czego jest inicjalizowana zmienna, gdy robisz coś takiego:
var aShape : CAShapeLayer!
I dlaczego/kiedy miałbym to zrobić?
1 answers
W deklaracji typu {[2] } jest podobna do ?
. Oba są opcjonalne, ale !
jest opcjonalnym "domyślnie rozpakowanym" , co oznacza, że nie musisz go rozpakowywać, aby uzyskać dostęp do wartości (ale nadal może być zerowa).
Jest to w zasadzie zachowanie, które mieliśmy już w objective-c. wartość Może być zerowa, i musisz to sprawdzić, ale możesz również uzyskać dostęp bezpośrednio do wartości, tak jakby nie była to opcja (z ważną różnicą, że jeśli nie sprawdź, czy nie pojawi się błąd runtime)
// Cannot be nil
var x: Int = 1
// The type here is not "Int", it's "Optional Int"
var y: Int? = 2
// The type here is "Implicitly Unwrapped Optional Int"
var z: Int! = 3
Użycie:
// you can add x and z
x + z == 4
// ...but not x and y, because y needs to be unwrapped
x + y // error
// to add x and y you need to do:
x + y!
// but you *should* do this:
if let y_val = y {
x + y_val
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-06 14:00:36