Programmering
  1. Teori
  2. Data
  3. Enum
  • Eksamen
  • Projektarbejde
  • Synopsis
  • Cheatsheets
    • Python cheatsheet
    • Rust cheatsheet
    • Kodningsplatforme
  • Opsætning
    • Git
    • Python
    • Rust
    • VScode
  • Teori
    • Arbejdsproces
      • Abstraktion
      • Fejlfinding
      • Generalisering
      • Git
      • Kommentarer
      • Moduler
      • Pakker
    • Data
      • Datastrukturer
      • Datatyper
      • Ejerskab og referencer
      • Enum
      • Hukommelse og pointers
      • Indkapsling
      • Polymorfi
      • Struct
    • Diagrammer
      • Brugerhistorier
      • Klassediagrammer
      • Rutediagrammer
      • Tegneprogrammer
    • Logik
      • Anonyme Funktioner
      • Fejlhåndtering
      • Grådig algoritme
      • Metaprogrammering
      • Samtidig programmering
  • Studieområdet
    • Forslag til emner
    • Empiri
    • Metoder i Programmering

På denne side

  • Rust: Datatyper i Enum
  • Rust: Option<T>
  • Videoer
  1. Teori
  2. Data
  3. Enum

Enum

Teori

Udgivet

16. februar 2026

Enum (enumeration/opremsning) giver mulighed for at definere et vilkårligt antal af værdier som en datatype kan antage.

NoteEnum eksempel med match

Nedenfor er der opstillet en enum der angiver de fem arbejdsdage i Rust [1]. For Python se enum — Support for enumerations.

Når der skal laves forgreninger der afhænger af værdien i en enum kan der udover alm. forgreninger bruges match. Især ved mange muligheder kan match være nemmere at læse, sikrer at alle muligheder er dækket og kan være mere effektivt [2] end en række if-else-sætninger. Se evt. også [3].

enum Workday {
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday
}

let day = Workday::Monday;

// Match: Alle muligheder skal dækkes, men _ kan bruges til at fange alt andet
match day {
    Workday::Monday => println!("Første dag efter weekend!"),
    Workday::Friday => println!("Weekend i morgen!"),
    _ => println!("Snart weekend!") 
}

Rust: Datatyper i Enum

Der kan også angives datatyper i værdierne for en Enum. Det muliggør fx at kunne have flere datatyper i parameteren til en funktion eller flere datatyper i en Vector.

NoteEksempel med Enum der indeholder både i8 og f32.
enum A {
    Int(i8),
    Float(f32)
}
let v = vec![A::Int(8), A::Float(6.5)];

Rust: Option<T>

Rust har en indbygget Enum Option hvor T angiver en vilkårlig datatype. Den bruges bl.a. når det ikke vides på forhånd, hvorvidt der kan returneres en værdi. Det er fx tilfældet for Vec::last()

enum Option<T> {
    None,
    Some(T),
}

Videoer

  • Enum
  • Option
Tilbage til toppen

Referencer

[1]
S. Klabnik og C. Nichols, “6. Enums and Pattern Matching”, i The Rust Programming Language, No Starch Press. Tilgængelig hos: https://doc.rust-lang.org/book/ch06-00-enums.html
[2]
ais523, “Is matching on patterns faster than if/else in rust?”, juni 2024. https://stackoverflow.com/questions/71806844/is-matching-on-patterns-faster-than-if-else-in-rust/78687284#78687284
[3]
S. Klabnik og C. Nichols, “19. Patterns and Matching”, i The Rust Programming Language, No Starch Press. Tilgængelig hos: https://doc.rust-lang.org/book/ch19-00-patterns.html

ZBC Slagelse HTX

Senest redigeret d. 16. februar 2026

JACS