Luke to extend an object, MAKE the object...
>> obj: make object! [a: 'a] >> obj: make obj [b: 'b] >> probe obj make object! [ a: 'a b: 'b ] HTH! ~~Ammon ;-> ----- Original Message ----- From: "Luke" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, January 13, 2004 11:25 AM Subject: [REBOL] Re: How to remove words from objects? > > Dear all > > thanks everyone for your contributions! > > I have in the meantime implemented my own approach > which works for me (similar to the ones suggested - see > below) using the "long way round" of reconstructing the > object. Its not very pretty (since it involves a "do" on a > dynamically built string) but it works for me, as do most of > your helpful suggestions. > > I dont understand Gregg what you mean when you say > the context of an object isnt dynamic. It probably goes > beyond my current level of understanding of how REBOL > works. > > But if so, then how does that explain why can I do this > (but not reverse the action): > > ;---create object > obj: make object [a: 1] > > ;---add a new word to the object > obj: make obj [b: 2] > > > L> I'm trying to dynamically add and remove words from an > > L> object...I know I could dynamically reconstruct it from scratch, > > L> but that is not very elegant. There must be a better way... > > > > Not really. The issue lies in the fact that the context of an object > > isn't dynamic; you can't add or remove things. The global context in > > REBOL is the only special case of a dynamic context I believe. > > > > You can get tricky and work around it, by including a block in your > > object and using that as kind of a sub-context--because blocks are > > resizable. I think Ladislav or Joel posted a dynamic object example > > here at one time. I didn't find one on REBOL.org in a quick search, > > maybe somebody submit one if they have it handy. > > > > This is the way I did it: > > object-remove-word: func [object word /local obj-result obj-copy-string action] [ > obj-copy-string: copy "" > obj-result: none > foreach w next first object [ > if not (w = word) [ > value: object/:w > append obj-copy-string rejoin [ > " " :w ": " mold :value newline > ] > ] > ] > action: rejoin ["make object! [" obj-copy-string "]" ] > obj-result: do action > :obj-result > ] > > All the best > > - Luke > __________________________________________ > > Various gadgets widgets, links and chat > http://www.marmaladefoo.com > __________________________________________ > -- > To unsubscribe from this list, just send an email to > [EMAIL PROTECTED] with unsubscribe as the subject. > > > -- To unsubscribe from this list, just send an email to [EMAIL PROTECTED] with unsubscribe as the subject.