Wu Language
  • Getting Started
  • Writing code
    • Declarations
    • Optionals
    • If and While
    • For
    • Switch
    • Functions
    • Structs
    • Module
    • Traits
Powered by GitBook
On this page
  1. Writing code

Traits

Wu has straight up stolen trait behavior from Rust and Pony. Traits can be thought of as behavior criteria for a struct, defined as a set of methods one can expect to find on a struct.

A trait can be defined like so:

Movable: trait {
    move: fun(self, dx: float, dy: foat)
}

Thus, anything that implements Movablewill have to have a method named movethat takes the given parameters on it.

We can implement traits on a struct like this:

Vector: struct {
    x: float
    y: float
}

implement Vector: Movable {
    move: fun(self, dx: float, dy: float) {
        self x += dx
        self y += dy   
    }
}

Now, when we try to move a Vector using the movemethod it works perfectly:

point := new Vector {
    x: 100
    y: 100
}

point move(10, 5)

PreviousModule

Last updated 5 years ago