When writing methods, there are several special variables
that are set automatically when a method runs.
Rexx supports the following
variables:
SELF
|
is set when a method
is activated. Its value is the object that forms the execution context for
the method (that is, the object that received the activating message).You
can useSELFto:
- Send messages to the currently active object.
For example, a FIND_CLUES method is running in an object called
Mystery_Novel.
When FIND_CLUES finds a clue, it sends a READ_LAST_PAGE
message to Mystery_Novel:
- Pass references regarding an object to the methods of other
objects. For example, a SING method is running in object
Song. The code:
would give the DUET method access to the same Song.
|
SUPER
|
is set when a method
is activated. Its value is the class object that is the usual starting point
for a superclass method lookup for theSELFobject. This is the first immediate
superclass of the class that defined the method currently running.The
special variableSUPERlets you call a method in the superclass of an object.
For example, the following Savings class has INIT methods that the Savings
class, Account class, and Object class define.
SELF Variable
::class Account |
|
::method INIT |
expose balance |
use arg balance |
self~init:super /* Forwards to the Object INIT method */ |
|
::method TYPE |
return "an account" |
|
::method name attribute |
|
::class Savings subclass Account |
|
::method INIT |
expose interest_rate |
use arg balance, interest_rate |
self~init:super(balance) /* Forwards to the Account INIT method */ |
|
::method type |
return "a savings account"
|
When the INIT method of the Savings
class is called, the variableSUPERis set to the Account class object. For
example:
This instruction sends
the INIT message to the Account
class rather than recursively invoking the INIT
method of the Savings class. When the INIT method
of the Account class is
called, the variableSUPERis assigned to the Object class
as this is the Account class' direct super class:
calls the INIT method of the Object
class. |