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.
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, 9Ominaisuudet
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) // 12Tarkkailijat
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 = 5Alustajat
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 runStruct 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.
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
- Structit ja classit, ominaisuudet ja alustajat
- Tallennetut ja lasketut ominaisuudet, tarkkailijat
- Alustajat ja deinit (classit)