Am 05.02.2009 um 22:08 schrieb Wolfgang Schuster:

Am 05.02.2009 um 21:55 schrieb Peter Münster:

A faster version of your macro is:

\def\MyFunction
{\dosingleempty\doMyFunction}

\def\doMyFunction[#1]%
{\removeunwantedspaces\executeifdefined{myfunction:#1} {\getvalue{myfunction:default}}}

\setvalue{myfunction:1}{\medspace dog }
\setvalue{myfunction:2}{\medspace cat }
\setvalue{myfunction:default}{\ldots}

I'm working now a lot with \setvariable and \getvariable. What are the
advantages/disadvantages of set/get-value over set/get-variable?

It's more a style decision, set/getvariable is at a higher level
than set/getvalue (just wrapper around \csname ... \endcsname) and
they provide a few test macros (doifelsevariable, doifvariable and
doifnotvariable).

It matters on which level do you work, is your code for the internals
in a module or used by a user.


My example above is on module level and no should use \setvalue to
add his own option for the \MyFunction command, you could now use
low level code and define your own command:

\def\defineMyFunction{\dodoubleargument\dodefineMyFunction}
\def\dodefineMyFunction[#1][#2]%
  {\setvalue{myfunction:#1}{#2}}

\defineMyFunction[1]      [\medspace dog ]
\defineMyFunction[2]      [\medspace cat ]
\defineMyFunction[default][\ldots        ]

You could have also used \setvariables from begin with the following
defintion for the complete macro:

\def\MyFunction{\dosingleempty\doMyFunction}
\def\doMyFunction[#1]%
  {\removeunwantedspaces\getvariabledefault{myvariable}{#1}%
     {\getvariable{myvariable}{default}}}

\setvariables % set all values with one command
  [myvariable]
  [1={\medspace dog },
   2={\medspace cat },
   default={\ldots}]

\setvariable{1}{\medspace dog } % This could be used instead
\setvariable{2}{\medspace cat } % of \setvariables, each value
\setvariable{default}{\ldots}   % is set with a separate command

Wolfgang

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to