Amedeo” post=84994Ciao a tutti,
ho bisogno di definire varibili dinamiche ovvero il cui nome dipende dal valore di altre variabili. Con un linguaggio di programmazione tradizionale, utilizzerei dei vettori posizionali
`
pos = 1
dim[ pos ] = 5
descr[ pos ] = “Compositore”
`
o associativi
`
dim[ “Giuseppe Verdi” ] = 5
descr[ “Giuseppe Verdi” ] = “Compositore”
`
o variabili dinamiche
`
pos = 1
eval dim$pos = 5 % pos1 = 5
eval descr$pos = “Compositore” % descr1 = “Compositore”
`
E con LaTeX?a
I nomi delle macro in TeX sono usati come chiavi di un grande array associativo che contiene i valori delle macro stesse. In sostanza, puoi definire macro che si chiamano come vuoi tu (non ci sono i vincoli stringenti sui nomi di variabili tipici di altri linguaggi di programmazione).
`\documentclass{article}
\makeatletter
\newcommand\getValue[1]{\@nameuse{value@#1}}
\newcommand\setValue[1]{\@namedef{value@#1}}
\newcommand\getDim[1]{\@nameuse{dim@#1}}
\newcommand\setDim[1]{\@namedef{dim@#1}}
\newcommand\getDescr[1]{\@nameuse{descr@#1}}
\newcommand\setDescr[1]{\@namedef{descr@#1}}
\makeatother
\begin{document}
\def\pos{1}
\setDim{\pos}{5}
\setDescr{\pos}{Compositore}
\getDim{\pos}, \getDescr{\pos}
\setDim{Giuseppe Verdi}{5}
\setDescr{Giuseppe Verdi}{Compositore}
\getDim{Giuseppe Verdi}, \getDescr{Giuseppe Verdi}
\def\pos{1}
\setValue{dim\pos}{5}
\setValue{descr\pos}{Compositore}
\getValue{dim1}, \getValue{descr1}
\end{document}`
Ciao,
Antonio