synonyms
Alex Tweedly
alex at tweedly.net
Wed Jun 28 18:14:13 EDT 2017
On 28/06/2017 15:27, Paul Dupuis via use-livecode wrote:
> Your solution illustrate more so than mine how easy it is to make handler
> and functions that use name/value pairs if someone prefers that model.
> The xtalk language really doesn't need any extensions or enhancements to
> enable this.
>
I completely disagree; to me, this discussion shows how much LC would
benefit from named parameters.
Clearly the examples so far look pretty nice -
(a) myHandler "type=blue","name=fred","something=234"
(b) myhandler "type=blue,name=fred,something=234"
but that's largely an illusion due to the fact that these are very
simple examples, using constant strings as actual parameters. Try to use
variables instead, and it doesn't look so pretty.
(a) myHandler "type=" & kConstant,"name=" & myName,"something="& the rect of grp "abc"
(b) myhandler "type=" & kConstant,"name=" & myName,"something="& the rect of grp "abc"
And in fact, that last one reminds us - as soon as you use a variable or
property, you need to be concerned about the current value in it; it
night contain the delimiter characters, in this case comma. So the
'single parameter string' version fails - you actually need to do
(b) myhandler "type=" & urlencode(kConstant),"name=" & urlencode(myName), \
"something="& urlencode(the rect of grp "abc")
(you can use a simpler encoding than urlencode - but this is built into
the engine, so it's probably faster).
And even then, you still have problems ....
- you can't pass arrays as parameters (I'm not going down the
'arrayencode() route :-)
- you can't have 'pass by reference' parameters
Richard mentioned a third alternative - but it is basically just using
whitespace instead of comma to delimit individual key/value pairs in a
single-string parameter, and so retains all the above problems.
He also mention a fourth method - using arrays - which he describes as
"more with the grain" which is more appealing, since it solves all the
above problems except the limitation on not using 'pass-by-reference'
parameters. But I'll split that off to a separate response, with a
changed subject/thread header.
-- Alex.
More information about the use-livecode
mailing list