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