Eliot Kimber
2015-07-19 15:40:22 UTC
I don't know why I'm having such a hard time figuring out how to operate
on maps but I just can't get my head around it (I suspect procedural brain
damage but it could just be advancing age). I suspect others will or are
having the same challenge.
My challenge of the day is:
I have an existing map where each entry is a sequence mapped to a string
key, e.g.:
let $m1 := map{ 'key1' : (), 'key2' : () }
I then have a node and a set of key values. For each key I need to find
the entry with that key and add the node to the entry, e.g.
let $newKeys := ('key1', 'key3')
let $obj := <added/>
Let $m2 := for $key in $newKeys
(: Find sequence for key,
Add obj to sequence,
Update map entry for new key
:)
I think the right answer is to use map:merge like so:
let $m2 :=
map:merge(
$m1,
lor $key in $newKeys
Map {$key, ($m1($key), $obj))}
)
Is my analysis correct? Is there a better way to do this sort of map
updating?
Thanks,
Eliot
----
Eliot Kimber, Owner
Contrext, LLC
http://contrext.com
_______________________________________________
***@x-query.com
http://x-query.com/mailman/listinfo/talk
on maps but I just can't get my head around it (I suspect procedural brain
damage but it could just be advancing age). I suspect others will or are
having the same challenge.
My challenge of the day is:
I have an existing map where each entry is a sequence mapped to a string
key, e.g.:
let $m1 := map{ 'key1' : (), 'key2' : () }
I then have a node and a set of key values. For each key I need to find
the entry with that key and add the node to the entry, e.g.
let $newKeys := ('key1', 'key3')
let $obj := <added/>
Let $m2 := for $key in $newKeys
(: Find sequence for key,
Add obj to sequence,
Update map entry for new key
:)
I think the right answer is to use map:merge like so:
let $m2 :=
map:merge(
$m1,
lor $key in $newKeys
Map {$key, ($m1($key), $obj))}
)
Is my analysis correct? Is there a better way to do this sort of map
updating?
Thanks,
Eliot
----
Eliot Kimber, Owner
Contrext, LLC
http://contrext.com
_______________________________________________
***@x-query.com
http://x-query.com/mailman/listinfo/talk