Blockchain-smart contracts med Solidity · Lektion

Structs og enums

Modellér komplekse data i Solidity med brugerdefinerede struct-typer, og repræsentér faste tilstandssæt med enums.

Lektion 4 af 413 trin

Structs og enums er en gratis Blockchain-smart contracts med Solidity-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Blockchain-smart contracts med Solidity, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Blockchain-smart contracts med Solidity-kurset indeholder 4 lektioner i alt.

Hvorfor brugerdefinerede typer?

Ud over primitive typer som uint og address giver Solidity dig mulighed for at definere dine egne typer. Structs grupperer relaterede felter, og enums repræsenterer et fast sæt navngivne tilstande.

Deklaration af en struct

En struct samler flere variabler under ét navn og er velegnet til at modellere virkelige enheder som en bruger eller en ordre.

struct User {
    string name;
    uint age;
    address wallet;
}

Oprettelse af struct-instanser

Du kan oprette en struct med positionsargumenter eller ved at navngive hvert felt. Navngivne argumenter er tydeligere og giver færre fejl.

User memory u = User({
    name: "Alice",
    age: 30,
    wallet: msg.sender
});

Structs i storage og memory

En struct i storage bevares på blockchainen; i memory er den en midlertidig kopi. Hvis du tildeler en storage-struct til en memory-variabel, kopieres den, så ændringer skrives ikke tilbage.

Opdatering af struct-felter

Hvis du vil ændre vedvarende data, skal du arbejde med en storage-reference og tildele værdier direkte til dens felter.

User storage u = users[msg.sender];
u.age = 31;

Structs i mappings

Structs er særligt nyttige, når de gemmes i en mapping med en adresse eller et id som nøgle, så hver bruger får sin egen post.

mapping(address => User) public users;
users[msg.sender] = User("Bob", 25, msg.sender);

Deklaration af en enum

En enum definerer et lille sæt navngivne valgmuligheder. Den gør koden mere læsbar end rå tal, når en tilstand skal repræsenteres.

enum Status { Pending, Shipped, Delivered, Cancelled }

Brug af enum-værdier

Enum-medlemmer gemmes som uint med start ved 0. Du sammenligner og tildeler dem ved navn, hvilket gør kontraktlogikken selvforklarende.

Status public status = Status.Pending;

function ship() public {
    status = Status.Shipped;
}

Enums i tilstandsmaskiner

Enums er ideelle til at modellere en tilstandsmaskine. Beskyt overgange med require, så en ordre kun kan gå videre til en gyldig næste tilstand.

function deliver() public {
    require(status == Status.Shipped, "Not shipped yet");
    status = Status.Delivered;
}

Kombination af structs og enums

Placér et enum-felt i en struct for at følge tilstanden for hver post, f.eks. ved at gemme en Status i hver ordre-struct, så hver ordre følger sin egen livscyklus.

Overvejelser om gas

Hvert struct-felt optager en storage-slot, og skrivning til storage er dyrt. Placér felter, så mindre typer pakkes sammen, og brug enums (én byte-række) i stedet for strings til faste tilstande for at spare gas.

Hurtigt tjek

Test din viden om structs og enums.

Opsummering

Du har lært om brugerdefinerede Solidity-typer:

  • Structs grupperer relaterede felter og gemmes ofte i mappings
  • Vær opmærksom på forskellen mellem storage og memory, når du kopierer eller opdaterer structs
  • Enums modellerer faste tilstande som heltal og driver tilstandsmaskiner
  • Kombinér dem, og pak felter for at spare gas

Brugerdefinerede typer gør kontrakter mere udtryksfulde og lettere at vedligeholde.

Gratis at komme i gang

Lær Blockchain-smart contracts med Solidity med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Structs og enums” gratis?

Ja — hele teksten til “Structs og enums” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Blockchain-smart contracts med Solidity-kurset, skal du opgradere til CoddyKit PRO. Blockchain-smart contracts med Solidity-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Structs og enums”?

Modellér komplekse data i Solidity med brugerdefinerede struct-typer, og repræsentér faste tilstandssæt med enums. Du øver dig i Blockchain-smart contracts med Solidity med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Blockchain-smart contracts med Solidity?

Der kræves ingen tidligere erfaring. Blockchain-smart contracts med Solidity på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Structs og enums”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Blockchain-smart contracts med Solidity-lektion?

Ja. Alle Blockchain-smart contracts med Solidity-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Solidity-datatyper og variabler
  2. Kontrolstrukturer og løkker
  3. Funktioner og synlighedsmodifikatorer
  4. Structs og enums
← Tilbage til Blockchain-smart contracts med Solidity