aiken/book/src/language-tour/constants.md

1.0 KiB

Constants

Aikens's module constants provide a way to use a certain fixed value in multiple places in a Aiken project.

pub const start_year = 2101
pub const end_year = 2111

pub fn is_before(year: Int) -> Bool {
  year < start_year
}

pub fn is_during(year: Int) -> Bool {
  start_year <= year && year <= end_year
}

Like all values in Aiken constants are immutable. They cannot be used as global mutable state.

When a constant is referenced the value is inlined by the compiler, so they can be used in case expression guards.

pub const start_year = 2101
pub const end_year = 2111

pub describe(year: Int) -> String {
  when year is {
    year if year < start_year -> "Before"
    year if year > end_year -> "After"
    - -> "During"
  }
}

Type annotations

Constants can also be given type annotations.

pub const name: String = "Aiken"
pub const size: Int = 100

These annotations serve as documentation or can be used to provide a more specific type than the compiler would otherwise infer.