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