Swift Academy · Oppitunti

Structit ja classit, ominaisuudet ja alustajat

Verratkaa arvo- ja viitesemantiikkaa, käyttäkää tallennettuja ja laskettuja ominaisuuksia sekä ominaisuuksien tarkkailijoita ja alustajia, ja tutustukaa class deinit -menetelmään.

Oppitunti 1/38 vaihetta

Structit ja classit, ominaisuudet ja alustajat on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 3 oppituntia.

Yleiskatsaus

Swiftissä on kaksi pääasiallista yhdistelmätyyppiä: struct (arvo) ja class (viite).

  • Structit kopioidaan sijoituksen yhteydessä
  • Luokat jakavat viittauksia

Arvot ja viittaukset

Structit kopioivat arvot, kun taas luokat jakavat viittauksia. Muuttaminen ei vaikuta b-arvon kautta a-arvoon, mutta d vaikuttaa c-arvoon.

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

Ominaisuudet

Tallennetut ominaisuudet sisältävät dataa, kun taas lasketut ominaisuudet muodostavat arvonsa käytön yhteydessä.

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

Tarkkailijat

Käyttäkää willSet- ja didSet-tarkkailijoita tallennettujen ominaisuuksien muutosten seuraamiseen.

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5

Alustajat

Structit saavat jäsenkohtaisen alustajan. Luokat määrittelevät init-alustajia (designated) ja voivat lisätä convenience-alustajia.

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

Vain luokilla on deinit, jota kutsutaan instanssin vapautuessa muistista (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

Struct vai class – pikatarkistus

Pikatarkistus: Mikä väite kuvaa oikein structien ja classien eroa?

Kertaus

Kertaus: Suosikaa struct-tyyppiä yksinkertaiselle datalle (arvosemantiikka). Käyttäkää class-tyyppiä jaetulle identiteetille, perinnälle ja deinit-käsittelijälle. Lisätkää tallennettuja ja laskettuja ominaisuuksia, tarkkailijoita sekä tarkoitukseen sopivia alustajia.

Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Structit ja classit, ominaisuudet ja alustajat” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Structit ja classit, ominaisuudet ja alustajat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 3 oppituntia.

Mitä opin oppitunnilla ”Structit ja classit, ominaisuudet ja alustajat”?

Verratkaa arvo- ja viitesemantiikkaa, käyttäkää tallennettuja ja laskettuja ominaisuuksia sekä ominaisuuksien tarkkailijoita ja alustajia, ja tutustukaa class deinit -menetelmään. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/3.

Kuinka kauan ”Structit ja classit, ominaisuudet ja alustajat”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Structit ja classit, ominaisuudet ja alustajat
  2. Tallennetut ja lasketut ominaisuudet, tarkkailijat
  3. Alustajat ja deinit (classit)
← Takaisin: Swift Academy