Zig Academy · Oppitunti

Optional-osoittimet ja ?*T

Yhdistäkää osoittimet valinnaisuuteen.

Oppitunti 3/413 vaihetta

Optional-osoittimet ja ?*T on ilmainen Zig Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Zig Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Zig Academy-kurssilla on yhteensä 4 oppituntia.

Myös osoittimet voivat olla optional-tyyppejä

Osoittimen on tavallisesti aina osoitettava kelvolliseen arvoon. Kun teet siitä optional-tyypin, se voi laillisesti tarkoittaa, ettei arvoa vielä ole.

Muoto ?*T

Tyyppi ?*T tarkoittaa optional-osoitinta tyyppiin T. Se joko osoittaa oikeaan arvoon tai sisältää null-arvon.

var node: ?*Node = null;

Turvallinen null-osoitin

Tämä on Zigin vastaus C-kielen null-osoittimille. Osoitin voi puuttua, mutta optional pakottaa tarkistamaan sen ennen dereferointia.

Pura ennen seuraamista

Et voi dereferoida ?*T-arvoa suoraan. Pura se ensin unwrap-toiminnolla if- tai orelse-rakenteessa saadaksesi alla olevan tavallisen osoittimen.

if (node) |p| {
    use(p.*);
}

Kaappaus antaa oikean osoittimen

if-kaappauksen sisällä nimi on tavallinen *Node, jonka voit dereferoida .* -merkinnällä kuten minkä tahansa muun kuin optional-osoittimen.

if (head) |p| {
    const value = p.*;
}

Erinomainen linkitettyihin rakenteisiin

Optional-osoittimet sopivat erinomaisesti linkitettyihin listoihin ja puihin, joissa next- tai child-kenttä on ketjun lopussa null.

const Node = struct { next: ?*Node };

Null merkitsee loppua

Kun käyt listaa läpi, next-kentän null ilmoittaa selkeästi, että olet saavuttanut viimeisen solmun ja sinun on lopetettava.

Zig tallentaa tunnisteen osoittimeen

Osoittimissa Zig tallentaa null-tilan itse osoittimen arvoon, joten ?*T ei vie enempää tilaa kuin tavallinen osoitin.

Const-optional-osoittimet

Voit yhdistää vain luku -ominaisuuden ja optional-ominaisuuden: ?*const T on optional-osoitin, jonka kautta voit lukea mutta et kirjoittaa.

var view: ?*const u8 = null;

Edelleenkään ei yllättäviä kaatumisia

Koska tyyppi kertoo arvon voivan olla null, kääntäjä ei anna sinun unohtaa tarkistusta, toisin kuin paljaan C-osoittimen dereferoinnissa.

Ketjun läpikäynti

while-silmukka, joka kaappaa jokaisen optional next -osoittimen, on idiomaattinen tapa käydä lista läpi, kunnes vastaan tulee null.

while (cur) |n| {
    cur = n.next;
}

Pikatarkistus

Mitä tyyppi ?*Node kuvaa?

Kertaus

Opit tyypin ?*T: turvallisen optional-osoittimen. Pura se ennen dereferointia ja anna null-arvon merkitä linkitettyjen rakenteiden loppua. 🔗

Aloita maksutta

Opi Zig 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
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Optional-osoittimet ja ?*T” ilmainen?

Kyllä – oppitunnin ”Optional-osoittimet ja ?*T” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Zig Academy-kurssin, päivitä CoddyKit PROhon. Zig Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Optional-osoittimet ja ?*T”?

Yhdistäkää osoittimet valinnaisuuteen. Harjoittelet Zig Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Zig Academy-opiskelun?

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

Kuinka kauan ”Optional-osoittimet ja ?*T”-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ä Zig Academy-oppitunnilla?

Kyllä. Jokainen Zig 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. Optional-tyyppien määrittäminen
  2. Turvallinen purkaminen if- ja orelse-rakenteilla
  3. Optional-osoittimet ja ?*T
  4. null ja undefined
← Takaisin: Zig Academy