Optional-osoittimet ja ?*T
Yhdistäkää osoittimet valinnaisuuteen.
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. 🔗
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
- Optional-tyyppien määrittäminen
- Turvallinen purkaminen if- ja orelse-rakenteilla
- Optional-osoittimet ja ?*T
- null ja undefined