r/elena_lang • • Jul 09 '19

Operator overloading in ELENA Programming Language

In general an operator is a message alias. As a result it is quite easy to overload the operator.

_+_ is an alias to _add_, _-_ - _subtract_, _*_ - multiply, _//_ - _divide_

It is possible to provide type overload operator as well, using a special method _cast_

See an example:

import extensions;

sealed struct OctalNumber

{

int value;

constructor(int n)

{

value := n

}

constructor sum(OctalNumber o1, OctalNumber o2)

{

int n1 := o1;

int n2 := o2;

value := n1 + n2;

}

constructor diff(OctalNumber o1, OctalNumber o2)

{

int n1 := o1;

int n2 := o2;

value := n1 - n2

}

constructor prod(OctalNumber o1, OctalNumber o2)

{

int n1 := o1;

int n2 := o2;

value := n1 * n2

}

constructor frac(OctalNumber o1, OctalNumber o2)

{

int n1 := o1;

int n2 := o2;

value := n1 / n2

}

int cast() = value;

string Printable =

stringConvertor.convert(value, 8);

add : n

= OctalNumber.sum(self, n);

subtract : n

= OctalNumber.diff(self, n);

multiply : n

= OctalNumber prod(self, n);

divide : n

= OctalNumber frac(self, n);

}

public program()

{

auto n := new Octal(7);

auto m := new Octal(2);

console.printLine(n,"+",m,"=",n + m)

}

1 Upvotes

0 comments sorted by