7.2 Accessing instance variables (slots)

The method `object<->slot' is used to access slots directly, bypassing possible methods with the same name. Normally, it should only be used in ->initialise (see below) and when defining a method with the same name as a variable. Below is a fragment where a type slot is displayed by a text object named type in a graphical object. This variable has access get, associating a universal method <-type that yields the current value of the slot. The implementation of ->type uses the ->slot method to write the argument in the <-type slot and subsequently performs the required side-effects. The ... indicate where the fragment is incomplete.

variable(type,  name,   get, "Epistemological type").

initialise(D, Type:name, ...) :->
        send_super(D, initialise),
        send(D, slot, type, Type),
        send(D, display, new(T, text(Type))),
        send(T, name, type),
        ...

type(D, Type:type) :->
        "Modify the epistemological type"::
        send(D, slot, type, Type),
        get(D, member, type, Text),
        send(Text, string, Type).
object ->slot: name, unchecked
object <-slot: name
uncheckedRead or write slot without side-effects. The value will be converted to the type of the instance variable addressed. An error is raised if this conversion is not defined or if the slot does not exist.