Operator method example
Source:
Expand

namespace Operator is
    class Number is
        int value;

        void init(int v) is
            Value = v;
        si

        set int Value = v is
            value = v;
        si

        get int Value is
            return value;
        si

        // define operator =~ method, which will be called for
        // both =~ and !~, to compare Numbers for value equality:
        bool operator =~(Number u) is
            return Value == u.Value;
        si

        // define operator + method to add two Numbers:
        Number operator +(Number u) is      
            return new Number(Value + u.Value);
        si

        // define operator - method to subtract two Numbers: 
        Number operator -(Number u) is
            return new Number(Value - u.Value);
        si

        // define operator > method, which is called for all
        // inequality operations, to return negative, zero or positive
        // result indicating ordering of two Numbers:
        int operator >(Number u) is
            return Value - u.Value;
        si

        String toString() is
            return Value.toString();
        si
    si

    class Main is
        void init() is
            var n = new Number(123);
            var m = new Number(456);

            IO.Std.out.println( "" + n + " + " + m + " = " + (n + m) );
            IO.Std.out.println( "" + m + " - " + n + " = " + (m - n) );
            IO.Std.out.println( "" + n + " =~ " + m + " = " + (m =~ n) );
            IO.Std.out.println( "" + n + " <= " + m + " = " + (m <= n) );

        si
    si
si
Output:
Expand
123 + 456 = 579
456 - 123 = 333
123 =~ 456 = false
123 <= 456 = true
site design and content copyright (C) jeek 1995-2010     [ 13132 ]