RosettaCodeData/Task/Add-a-variable-to-a-class-i.../Forth/add-a-variable-to-a-class-i...

31 lines
720 B
Forth

include FMS-SI.f
include FMS-SILib.f
\ We can add any number of variables at runtime by adding
\ objects of any type to an instance at run time. The added
\ objects are then accessible via an index number.
:class foo
object-list inst-objects \ a dynamically growable object container
:m init: inst-objects init: ;m
:m add: ( obj -- ) inst-objects add: ;m
:m at: ( idx -- obj ) inst-objects at: ;m
;class
foo foo1
: main
heap> string foo1 add:
heap> fvar foo1 add:
s" Now is the time " 0 foo1 at: !:
3.14159e 1 foo1 at: !:
0 foo1 at: p: \ send the print message to indexed object 0
1 foo1 at: p: \ send the print message to indexed object 1
;
main \ => Now is the time 3.14159