0Pricing
Swift Academy · Lekcja

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, 9

Wł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)  // 12

Obserwatory

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 = 5

Inicjalizatory

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 run

Pytanie 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

  1. Structs a Classes, właściwości i inicjalizatory
  2. Właściwości przechowywane i obliczane, obserwatory
  3. Inicjalizatory i deinit (klasy)
← Powrót do Swift Academy