Operator overloading
Inko supports a variety of operators (see for the full list), and these can be implemented for your own types. In fact, operators are just regular methods, though the compiler may choose to optimise some of them whenever possible.
Operators are provided by the various traits found in the module std.ops
. For
example, the +
operator is provided by the Add
trait. Here's how we might
implement this operator for a custom type:
import std.ops (Add)
type Rational {
let @numerator: Int
let @denominator: Int
}
impl Add[Rational, Rational] for Rational {
fn pub +(other: ref Rational) -> Rational {
Rational(
numerator: @numerator + other.numerator,
denominator: @denominator + other.denominator
)
}
}