Rozumiem, że w Swift wszystkie zmienne muszą mieć przypisaną wartość i że za pomocą opcji opcjonalnych możemy ustawić zmienną, która ma być ustawiona nil
początkowo.
Nie rozumiem, co robi ustawienie zmiennej na a !
, ponieważ miałem wrażenie, że to „odpakowuje” wartość z opcjonalnej. Pomyślałem, że robiąc to, gwarantujesz, że ta zmienna ma wartość do rozwinięcia, dlatego w IBActions i takich, jak widzisz, jest używana.
Krótko mówiąc, do jakiej zmiennej jest inicjowana, gdy robisz coś takiego:
var aShape : CAShapeLayer!
A dlaczego / kiedy miałbym to zrobić?
Odpowiedzi:
W deklaracji typu
!
jest podobny do?
. Obie są opcjonalne, ale!
jest to opcja „ niejawnie rozpakowana” , co oznacza, że nie trzeba jej rozpakowywać, aby uzyskać dostęp do wartości (ale nadal może być zero).Jest to w zasadzie zachowanie, które już mieliśmy w celu-c. Wartość może wynosić zero i musisz to sprawdzić, ale możesz również uzyskać bezpośredni dostęp do wartości, tak jakby nie była opcjonalna (z tą ważną różnicą, że jeśli nie sprawdzisz, czy nie ma zera, otrzymasz błąd wykonania)
Stosowanie:
źródło
nil
wartości i faktycznie z nią „pracować”, przy szybkim dostępie do niejawnie rozpakowanego elementu opcjonalnego, gdy jest on zerowy, zgłosi wyjątek czasu wykonania.