Class-variables are declared, similar to instance-variables. through macro-expansion inside the :- pce_begin_class/[2,3] ... :- pce_end_class/0 definition of a class. The syntax is:
class_variable(<name>, <type>, <default>, [<summary>]).
<default> defines the value if not overruled in the Defaults
file. It is a Prolog term describing an object similar to the arguments
of send/[2-12].
In the following example. there is a class with the property
`expert_level'. The program defines the default level to be novice. The
user may change that in his/her personal Defaults file or
change it while the application is running. As the value may change at
runtime, there should be an instance- as well as a class-variable. Below
is the skeleton for this code:
variable(expert_level, {novice,advanced,expert}, get,
"Experience level of the user").
class_variable(expert_level, @default, novice).
expert_level(Obj, Level:{novice,advanced,expert}) :->
send(Obj, slot, expert_level, Level),
<handle changes>.
...,
( get(Obj, expert_level, expert)
-> ...
; ...
),
...
|