Re: overloading

#69596
robitex
Amministratore del forum
    Up
    0
    Down
    ::

    antonio.macrì” post=68719

    Uhm, continuo ancora ad essere dubbioso sulla possibilità di gestire un numero di argomenti variabili con TeX, per il semplice motivo che la ricerca dei token argomento compiuta da un comando è “fissa” (attendiamo pareri TeXnici).

    Scusa, ti do perfettamente ragione, non si ha certo “overloading dei nomi dei comandi”. Concordo con te (per quanto ne so) sul fatto che in TeX non esiste una cosa simile, per il semplice motivo che a identificare un comando è il solo nome. Tutti i linguaggi che supportano overloading introducono il concetto di firma di una funzione, che considera anche gli argomenti. In TeX, quello che si può fare è emularlo, come nel mio precedente esempio.

    Ciao,
    Antonio

    Si, il codice che ho postato non funziona (sono anche un po’ arrugginito di TeX), era solo un tentativo per toccare con mano che senza un delimitatore (l’informazione aggiuntiva che in pratica da conto del numero degli argomenti) non si riesce a capire in quale caso siamo e comunque occorre una qualche acrobazia come questa, più semplice delle parentesi tonde (certo che il nostro utente poteva trovare un nome di comando diverso…):

    `\documentclass{minimal}
    \usepackage[utf8]{inputenc}

    \makeatletter
    % cmd con due arg
    \def\insulti@ii#1#2{#1 è #2}
    % cmd con tre arg
    \def\insulti@iii#1#2#3{#1 e #2 sono #3}

    % cmd utente
    \def\insulti#1#2#3;{%
    \def\tmp@{#3}%
    \ifx\tmp@\@empty
    \insulti@ii{#1}{#2}%
    \else
    \insulti@iii{#1}{#2}{#3}%
    \fi
    }
    \makeatother

    \begin{document}

    \insulti{Paolo}{Andrea}{pasticcioni};

    \insulti{Paolo}{furbetto};

    \end{document}`
    Un saluto.
    R.

    Go to top