Structs a Classes, właściwości i inicjalizatory
Porównajcie semantykę wartości i referencji; używajcie właściwości przechowywanych i obliczanych, obserwatorów właściwości, inicjalizatorów oraz deinit klas.
Structs a Classes, właściwości i inicjalizatory to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 3 lekcji w sumie.
Przegląd
Swift ma dwa główne typy złożone: struct (typ wartościowy) i class (typ referencyjny).
- Struktury są kopiowane podczas przypisywania
- Klasy współdzielą referencje
Wartość a referencja
Struktury kopiują wartości, a klasy współdzielą referencje. Zmiana b nie wpływa na a, natomiast zmiana d wpływa na c.
struct Point { var x = 0, y = 0 }
class CPoint { var x = 0, y = 0 }
var a = Point(x: 1, y: 1)
var b = a // copy
b.x = 9
print("struct a.x =", a.x, "b.x =", b.x) // 1, 9
let c = CPoint(); c.x = 1
let d = c // same reference
d.x = 9
print("class c.x =", c.x, "d.x =", d.x) // 9, 9Właściwości
Właściwości przechowywane przechowują dane, a właściwości obliczane wyznaczają wartości podczas dostępu.
struct Rectangle {
var width: Double // stored
var height: Double // stored
var area: Double { // computed
return width * height
}
}
let r = Rectangle(width: 3, height: 4)
print(r.area) // 12Obserwatory
Proszę używać willSet/didSet, aby obserwować zmiany właściwości przechowywanych.
struct Counter {
var value: Int = 0 {
willSet { print("will set to", newValue) }
didSet { print("did set from", oldValue) }
}
}
var cnt = Counter()
cnt.value = 5Inicjalizatory
Struktury otrzymują inicjalizator składowy. Klasy definiują init (designated) i mogą dodawać inicjalizatory convenience.
struct User {
var name: String
// memberwise init is synthesized: User(name:)
}
class Person {
var name: String
init(name: String) { // designated
self.name = name
}
convenience init() { // convenience
self.init(name: "Guest")
}
}
let u = User(name: "Ada")
let p = Person()
print(u.name, p.name)deinit
Tylko klasy mają deinit, wywoływane podczas zwalniania instancji (ARC).
class Temp {
let id: Int
init(id: Int) { self.id = id }
deinit { print("Temp \\(id) deinit") }
}
do {
let t = Temp(id: 1)
print("using", t.id)
} // t goes out of scope and deinit may runPytanie o struct i class
Szybkie sprawdzenie: Które stwierdzenie prawidłowo przedstawia różnicę między strukturami a klasami?
Podsumowanie
Podsumowanie: Proszę preferować struct w przypadku prostych danych (semantyka wartości). Proszę używać class do współdzielenia tożsamości, dziedziczenia i obsługi deinit. Można dodawać właściwości przechowywane i obliczane, obserwatory oraz odpowiednie inicjalizatory.
Często zadawane pytania
Czy lekcja „Structs a Classes, właściwości i inicjalizatory” jest bezpłatna?
Tak — pełny tekst „Structs a Classes, właściwości i inicjalizatory” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 3 lekcji w sumie.
Co nauczysz się w „Structs a Classes, właściwości i inicjalizatory”?
Porównajcie semantykę wartości i referencji; używajcie właściwości przechowywanych i obliczanych, obserwatorów właściwości, inicjalizatorów oraz deinit klas. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.
Ile czasu zajmuje lekcja „Structs a Classes, właściwości i inicjalizatory”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Structs a Classes, właściwości i inicjalizatory
- Właściwości przechowywane i obliczane, obserwatory
- Inicjalizatory i deinit (klasy)