Methods - qlova/ilang GitHub Wiki

Methods in i

The i programming language has a very different method style then other languages.
Methods in i behave similarly to function overloading.

There are a set of builtin methods which can be overloaded depending on what type is passed.
The methods in i are very powerful, they allow for custom casting, standardised use and consistency.

For example:

text()     --> ""
text("hi") --> "hi"
text(22)   --> "22"

Methods can be created for custom types too:

type Custom {}
method text(Custom) "" {
    return "custom"
}

Calling text(Custom()) will return "custom".

Multiple Arguments.

For methods with arguments, they are supported with the following syntax:

method Custom.print(""s) {
    print(s)
}

Custom().print("hello feature")

MetaMethods

i has a few meta methods which extend the functionality of your type.

New

New Methods are used to initialise things in your type, it's good practise to include a new method if your type has any Custom type members.

type Weight { value }
method new(Weight) {
    value = 50
}

print(new(Weight).value) --> 50

Run (Not Implemented)

type Runnable {}
method run(Runnable) {
    print("running runnable!")
}

var r = Runnable()
r() --> "running runnable"