not read detailed, but:
if you have
a: block[ key1 "data1" key2 "data2" ] ..
you can say
a/key1 ; -> "data1"
but add new values.
which hash it should be fast enough?
but beware, if key & data are of same type,
it may find a data as a key, giving the next key..
maybe enhancement find/skip 2 ?
i use like this to extend a block,
it sets new fields from config-default
config: from somewhere..
config-default: [file %./unnamed files [] posis []]
a: config-default
forskip a 2 [if not find config first a [
append config reduce [first a second a]]]
;config updated
[EMAIL PROTECTED] wrote on 9-Sep-2000/23:50:09-4:00
> I have an existing dataase
> of saved objects which I wish to add fields to (IE add words:).
> I probably only want to add the words if I absolutely must
> in order to keep size down. I also may already
> have added a particular word to an object instance and dont wish to
> overwrite the value already associated with that word.
>
>
> Here is what I have so far.
> questions follow below.
>
>
>
> object-addword: func [
>
> { add a word only if it is not already there,
> returns a new instance of the object
>
> examples
> myobj: object-addword myobj emailaddr
> dbrecord: object-addword/initial dbrecord areacode 978
> }
>
> o [object!] "the object to have a word added"
> 'w1 [any-word!] "the word to add"
> /initial
> vdef [any-type!] "provide initial value for the word"
> /local
> mb "mini block"
> ] [
> if not find (first o) w1 [
> ; try to emulate: set/any in o w1 none
> mb: do rejoin [ {[} :w1 {: none ]} ]
> o: make o mb
> if initial [ set/any in o w1 vdef ]
> ]
> return o
> ]
>
>
> ;-------- for discussion:
>
> - can this be written more succinctly yet not hardcode
> anything about the object?
> - can it be done without creating a new instance?
> - can a corresponding function for removing a word
> from an object be written without evaluating
> all the other words/elements?
>
>
>
> I have tried several arrangements for the arguments
> and names for the function. I have settled on
>
> object-addword rcvrobj operand
>
> - are the precedents for putting the word operand first?
>
> - since, from context, you can tell which argument
> is the object and which is simply a word
> which may need to be added to the object,
> why not make the function figure out
> which argument is which type and do the right thing
> regardless of how it is called?
> can this be coded without resorting to second-level functions?
>
> - is a better name for the function possible?
> I have considered 'object+ and 'object+word as potential names.
> Is there a precedent that I have missed?
>
> ;# mailto: [EMAIL PROTECTED]
>
>
>