Skip to content

Structures And Enums

Structures

Structures are the main tool for linking datasets.
Deen compiler allows you to define your own structures with your own methods.

Syntax

Definition Syntax:

deen
pub/NOTHING struct identifier {
  field: type,
  ...,

  fn identifier ( param: type, ... ) type/NOTHING {
    // code
  }
}

Usage Syntax:

deen
// initialization
identifier { .field = value, ... }

// field get
identifier.field

// method call
identifier.method( param, ... )

Examples

deen
struct Person {
  age: u32,

  fn new(age: u32) Person {
    return Person { .age = age };
  }

  fn birthday(&self) {
    self.age += 1;
    println!("Happy Birthday!");
  }
}

fn main() i32 {
  let person = Person.new(25);
  person.birthday();

  println!("Current age: {}", person.age);

  return 0;
}
Happy Birthday!
Current age: 26

deen
struct Int {
  value: i32,
  iterator: i32,

  fn new(value: i32) Int {
    return Int { .value = value, .iterator = 0 };
  }

  // reserved functions

  fn display(&self) *char {
    return format!("{}", self.value);
  }

  fn iterate(&self) (i32, bool) {
    if self.iterator >= self.value {
      self.iterator = 0;
      return (0, false);
    }

    let value = self.iterator;
    self.iterator += 1;

    return (value, true);
  }
}

fn main() {
  let int = Int.new(5);

  println!("Iterating `{}`", int);

  for idx = int {
    println!("{}", idx);
  }
}
Iterating `5`
0
1
2
3
4

Enumerations

Enumeration is a user-defined set of named integer constants.
In Deen, enums are similar to those in the C language.

Syntax

Definition Syntax:

deen
pub/NOTHING enum identifier {
  field,
  ...
}

Usage Syntax:

deen
identifier.field

Examples

deen
enum ABC { A, B, C }

fn main() {
  println!("{}", ABC.A);
  println!("{}", ABC.B);
  println!("{}", ABC.C);
}
0
1
2

deen
enum ABC { A, B, C }

fn main() {
  let a = ABC.A;
  let b = ABC.A;

  println!("a == b: {}" a == b);
}
a == b: true