[REBOL] Re: Embedded objects - deviation
From: lmecir:mbox:vol:cz at: 13-Mar-2003 11:09
Hi, you can even use:
dynamic: function [
{make a dynamic object}
spec [block!]
/inherit object [object!]
] [result] [
result: make object! [data: none]
result/data: make either inherit [object/data] [object!] spec
result
]
add-data: func [
{add data to a dynamic object}
dynamic [object!]
spec [block!]
] [
dynamic/data: make dynamic/data spec
dynamic
]
dp: function [
path [path!]
] [path2] [
path2: make path! (2 * length? :path) + 2
foreach word path [
insert insert tail :path2 word 'data
]
remove back tail :path2
:path2
]
dyn: func [
code [block!]
] [
code: copy code
change/only code dp first code
do code
]
; tests
Bob: dynamic [name: "Bob"]
BobsDog: dynamic [name: "Rex"]
SuzyCat: dynamic [name: "Suzy"]
dyn [Bob/name] ; == "Bob"
dyn [BobsDog/name] ; == "Rex"
dyn [SuzyCat/name] ; == "Suzy"
add-data Bob [BobsDog: rebol/words/BobsDog]
dyn [Bob/BobsDog/name] ; == "Rex"
add-data BobsDog [SuzyCat: rebol/words/SuzyCat]
dyn [BobsDog/SuzyCat/name] ; == "Suzy"
dyn [Bob/BobsDog/SuzyCat/name] ; == "Suzy"
and there are other variants of the wording you can use
Regards
-L