Zig Academy · Oppitunti

Tyyppien luominen @Type-ohjelmointikäännöksellä

Rakenna uusia tyyppejä ohjelmallisesti.

Oppitunti 2/413 vaihetta

Tyyppien luominen @Type-ohjelmointikäännöksellä on ilmainen Zig Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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.

@typeInfo:n vastakohta

Jos @typeInfo muuttaa tyypin dataksi, @Type muuttaa datan takaisin oikeaksi tyypiksi. Yhdessä niiden avulla voit muokata tyyppejä käännösaikana. 🛠️

Anna sille Type.Info-arvo

@Type ottaa std.builtin.Type-arvon ja tuottaa sen kuvaaman konkreettisen tyypin. Annat sille kuvauksen, ja se antaa sinulle tyypin.

const T = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 8 } });

Rakenna kokonaislukutyyppi

Yllä oleva esimerkki rakentaa tyypin u8 alusta alkaen. Muuta bittien määräksi 16, niin saat u16-tyypin — kaikki päätetään ohjelman kääntämisen aikana.

const U16 = @Type(.{ .Int = .{ .signedness = .unsigned, .bits = 16 } });

Muunna tyyppi edestakaisin

Tyypin välittäminen @typeInfo-funktiolle ja sen jälkeen @Type-funktiolle palauttaa täsmälleen saman tyypin. Tämä osoittaa, että nämä kaksi sisäänrakennettua toimintoa ovat toistensa tarkat käänteisoperaatiot.

const Same = @Type(@typeInfo(u32));

Kuvaile Struct tietona

Structin muodostamista varten täytätte StructField-taulukon. Jokainen kenttä tarvitsee nimen, tyypin, tasauksen ja oletusosoittimen.

const f = std.builtin.Type.StructField;

Kokoa Struct-hyötykuorma

包包i kentät .Struct-hyötykuormaan, jossa määritetään asettelu ja is_tuple-lippu, ja välitä koko kokonaisuus @Type-funktiolle.

const info = .{ .Struct = .{
    .layout = .auto,
    .fields = my_fields,
    .decls = &.{},
    .is_tuple = false,
} };

Luo uusi Struct-tyyppi

Kutsukaa @Type-funktiota tälle hyötykuormalle, niin saatte täysin uuden struct-tyypin, joka muodostetaan oman logiikkanne perusteella eikä kirjoiteta käsin.

const Generated = @Type(info);

Oletukset tarvitsevat comptime-osoittimen

Kentän default_value on valinnainen vakio-osoitin arvoon tai null, jos oletusarvoa ei ole. Osoittimen on oltava comptime-tiedossa.

const dv: ?*const anyopaque = &@as(u8, 0);

Muodosta enumit ja muuta

Sama menetelmä toimii structien lisäksi muuallakin: .Enum-hyötykuorman avulla @Type voi muodostaa enum-tyyppejä laskennallisesti määritetystä jäsenluettelosta.

Miksi tyyppejä ylipäätään muodostetaan

Muodostetut tyypit ovat serialisoijien ja ORM-järjestelmien perusta: voitte johtaa pakatun asetus- tai rivirakenteen automaattisesti sen sijaan, että muokkaisitte sitä käsin. ✨

Yhdistä reflektioon

Tehokkaimmassa mallissa tyyppi luetaan @typeInfo-funktiolla, tietoja muunnetaan ja uusi tyyppi muodostetaan sitten @Type-funktiolla, esimerkiksi lisäämällä kenttä.

Pikakysymys

Teillä on structia kuvaava std.builtin.Type-arvo. Mikä muuttaa sen käyttökelpoiseksi tyypiksi?

Kertaus

@Type muodostaa oikeita tyyppejä Type.Info-tiedoista ja toimii @typeInfo-funktion käänteisoperaationa. Yhdistämällä ne voitte lukea, muuntaa ja luoda tyyppejä uudelleen. 🎯

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 ”Tyyppien luominen @Type-ohjelmointikäännöksellä” ilmainen?

Kyllä – oppitunnin ”Tyyppien luominen @Type-ohjelmointikäännöksellä” 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 ”Tyyppien luominen @Type-ohjelmointikäännöksellä”?

Rakenna uusia tyyppejä ohjelmallisesti. 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 2/4.

Kuinka kauan ”Tyyppien luominen @Type-ohjelmointikäännöksellä”-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. Kenttien tarkastelu @typeInfo-ohjelmointikäännöksellä
  2. Tyyppien luominen @Type-ohjelmointikäännöksellä
  3. Comptime-validointi ja @compileError
  4. Koodin generointi comptimella
← Takaisin: Zig Academy