surcharge les fonctions définies par l'utilisateur
overload(funnam [,type])
overload()
overload(table_of_overloaded_fun)
nom d'une fonction
un vecteur optionel (1 par n) de chaînes contenant les types déjà gérés par la fonction (voir overloading pour les codes des différents types)
une matrice (n par 2) de chaînes de caractères contenant dans la première colonne le nom des fonctions qui gèrent un type spécifique et dans la seconde le nom de la fonction réellement appelée.
Cette fonction permet de surcharger des fonctions définies par l'utilisateur.
La fonction surchargée doit exister soit en mémoire soit dans un fichier accessible.
Par exemple, l'appel overload(funnam,['s','c'])
crée une copie %s_fun=fun
, crée une entrée %c_fun
dans la table et celle-ci pointe vers '%s_fun'
, efface fun
et crée un point d'entrée fun
dans la libraire dynamique. Après cela, l'appel de fun(arg1,...)
sera transformé en %<type_of_arg1>_fun(arg1,...)
.
Il faut faire attention à ce que cette toolbox ne peut surcharger que 98 fonctions.
//on définit une fonction inc pour les réels (type 's'), //les polynômes ('p') ou les booleéns ('b') //mais pas pour les chaînes ('c') deff('y=inc(x)','y=x+1') //on définit une focntion %c_inc qui //gère le type chaîne deff('y=%c_inc(x)','y=code2str(str2code(x)+1)') //on surcharge la fonction inc et l'on préserve //les types 's', 'p' et 'b' overload('inc',['s' 'p' 'b']) //on peut maintenant utiliser inc avec les constantes, //les polynômes ou les chaînes inc(2),inc(1+%s+%s^2),inc(%t) inc('abcdef') //pour voir les types gérés par %s_inc a=overload() //on peut enlever le type 'p' a(2,:)=[],overload(a) inc(%s) | ![]() | ![]() |