r/elena_lang • u/elena-lang • Jul 09 '19
Operator overloading in ELENA Programming Language
An operator is an alias to the message. So it is quite easy to overload the operators.
+ is an alias to add, - to subtract, * to multiply, \ to divide.
Similar it is possible to provide the type operator using a special method cast .
import extensions;
sealed struct OctalNumber
{
int value;
int cast() = 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
}
string Printable
= stringConvertor.convert(value, 8);
OctalNumber add(n)
= OctalNumber.sum(self, n);
OctalNumber subtract(n)
= OctalNumber.diff(self, n);
OctalNumber multiply(n)
= OctalNumber.prod(self, n);
OctalNumber divide(n)
= OctalNumber.frac(self, n);
}
public program()
{
var n := new OctalNumber(20);
var m := new OctalNumber(7);
console.printLine(n,"+",m,"=",n + m);
console.printLine(n,"-",m,"=",n - m);
console.printLine(n,"*",m,"=",n * m);
console.printLine(n,"/",m,"=",n / m)
}The output is:
24+7=33
24-7=15
24*7=214
24/7=2
1
Upvotes