Arvotyypit ja muuttumattomuus
Katso, miten let estää arvotyyppien muuttamisen.
Arvotyypit ja muuttumattomuus on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. 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ä 4 oppituntia.
Struct-tyypit ovat arvotyyppejä
Swiftissä struct ja enum ovat arvotyyppejä. Kun sellainen sijoitetaan uuteen muuttujaan, siitä luodaan kopio.
struct Point { var x: Int; var y: Int }
var a = Point(x: 1, y: 2)
var copy = a
copy.x = 99
print(a.x, copy.x)let lukitsee koko arvon
Structin ilmoittaminen let-määrityksellä tekee koko arvosta muuttumattoman, mukaan lukien kaikki sen ominaisuudet.
struct Counter { var value: Int }
let c = Counter(value: 0)
// c.value = 5 // compile error
print(c.value)var sallii muuttamisen
Käyttäkää var-määritystä, kun aiotte muuttaa structin ominaisuuksia luomisen jälkeen.
struct Counter { var value: Int }
var c = Counter(value: 0)
c.value = 5
print(c.value)Kopiointi sijoituksen yhteydessä
Jokainen muuttuja sisältää oman itsenäisen kopionsa. Yhden muuttaminen ei koskaan vaikuta toiseen.
struct Box { var label: String }
var first = Box(label: "A")
var second = first
second.label = "B"
print(first.label, second.label)Arvosemantiikka funktioissa
Kun välitätte structin funktiolle, välitätte siitä kopion. Funktion ulkopuolella oleva alkuperäinen arvo ei muutu.
struct Score { var points: Int }
func bump(_ s: Score) {
var local = s
local.points += 10
}
var s = Score(points: 0)
bump(s)
print(s.points)Muuttumattomat ominaisuudet
Structin sisällä let-määrityksellä ilmoitettua ominaisuutta ei voi koskaan muuttaa, ei edes var-instanssissa.
struct User { let id: Int; var name: String }
var u = User(id: 1, name: "Ada")
u.name = "Bob"
// u.id = 2 // compile error
print(u.id, u.name)Array, Dictionary ja Set ovat myös arvotyyppejä
Swiftin Array-, Dictionary- ja Set-tyypit ovat struct-tyyppejä, joten ne kopioidaan sijoituksen yhteydessä.
var a = [1, 2, 3]
var b = a
b.append(4)
print(a)
print(b)String on arvotyyppi
String on myös arvotyyppi. Kopion muuttaminen ei vaikuta alkuperäiseen.
var s1 = "hi"
var s2 = s1
s2 += " there"
print(s1)
print(s2)Miksi arvotyypeistä on hyötyä
Arvosemantiikka estää vahingossa syntyviä jaetun tilan virheitä. Voitte päätellä arvon toiminnan paikallisesti tarvitsematta huolehtia siitä, kenellä muulla on siihen viite.
struct Config { var retries: Int }
let defaultConfig = Config(retries: 3)
var custom = defaultConfig
custom.retries = 5
print(defaultConfig.retries, custom.retries)Muuttumattomuus ja turvallisuus
Arvojen merkitseminen let-määrityksiksi aina kun mahdollista tekee koodista turvallisempaa ja selkeämpää. Kääntäjä varmistaa, etteivät ne muutu.
let limit = 100
let name = "stable"
print(limit, name)let-muuttujan uudelleenmäärittäminen epäonnistuu
let-sidontaa ei voi määrittää uudelleen eikä sen sisältämää arvoa voi muuttaa.
let pi = 3.14
// pi = 3.15 // compile error
print(pi)Pikatarkistus
Testatkaa arvotyyppien toimintaa.
Kertaus
Structit ja enumit ovat arvotyyppejä: ne kopioidaan sijoituksen yhteydessä ja kun ne välitetään funktioille. let-sidonta lukitsee koko arvon, eikä let-ominaisuutta voi koskaan muuttaa. Näin tila pysyy ennakoitavana ja erillisenä.
struct P { var n: Int }
var a = P(n: 1)
var b = a
b.n = 9
print(a.n, b.n)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 ”Arvotyypit ja muuttumattomuus” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Arvotyypit ja muuttumattomuus”. 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ä 4 oppituntia.
Mitä opin oppitunnilla ”Arvotyypit ja muuttumattomuus”?
Katso, miten let estää arvotyyppien muuttamisen. 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/4.
Kuinka kauan ”Arvotyypit ja muuttumattomuus”-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
- Arvotyypit ja muuttumattomuus
- mutating-avainsana
- Mutating ja selfin uudelleenasetus
- Muuttamattomat vaihtoehdot