Porównanie Magik implementuje wszystkie zwykłe operatory logiczne (=, <, <=, >, >=, ~=/<>) do porównań, jak również parę niecodziennych. Operatory _is oraz _isnt są używane do porównywania określonych instancji obiektów zamiast wartości.
Na przykład:
a << "hello" b << "hello"
a = b zwraca True (_true) ponieważ wartości a i b są równe a _is b zwraca False (_false) ponieważ a nie jest tą samą instancją co b
a << "hello" b << a = b zwraca True (_true) ponieważ wartości a i b są równe a _is b zwraca True (_true) ponieważ do b przypisaliśmy instancję obiektu a zamiast wartości a.
Metody Metody są definiowane w egzemplarzach za pomocą instrukcji _method i _endmethod:
_method my_object.my_method(a, b) _return a + b _endmethod
Jest to konwencja dostarczenia dwóch metod new() (do utworzenia nowej instancji) and init() (do zainicjowania instancji).
# Metoda new _method person.new(name, age) _return _clone.init(name, age) _endmethod
# Metoda inicjalizacji. _private _method person.init(name, age) # Wywołanie implementacji rodzica. _super.init(name, age) # Inicjalizacja slotów. .name << name .age << age _return _self _endmethod