Cette instruction permet de définir de nouveaux types que le parser
puisse
reconnaître, au même titre que les primitives et les classes.
Utiliser une fonction comme une variable
Vous pouvez utiliser une fonction comme argument d'une autre fonction
en la définissant en tant que type. Cela ne fonctionne qu'au niveau global
et pas dans une classe, une fois un type définit, on ne peut le redéfinir.
1) définir une fonction:
Ex: int add(int a, int b) int x = a + b return x
2) définir un type, en utilisant cette fonction comme modèle: define ADDING = "add"
3) définir une autre fonction générique qui utilisera cette fonction comme
argument:
void myfunc(ADDING a, int x, int y) print a(x,y) return
4) utiliser la fonction générique:
myfunc("add", 10, 8)
Vous pouvez maintenant définir une autre fonction, "mul" par exemple,
selon le même modèle, donc avec le même type de retour et d'arguments,
que la fonction "add", et l'utiliser à la place. mufunc("mul", x, y)
Utilisation d'un type externe
La syntaxe: define NOUVEAUTYPE
Ceci crée un nouveau type que l'on peut utiliser en argument de fonctions
externes. Voir les exemples GTK sur l'utilisation d'un type externe.
Exercices |
1) Ecrire deux fonctions entières "compareInt"
et "addInt" qui comparent ou ajoutent respectivement deux
nombres entiers.
Le tableau suivant est donné:
array a = { 0, 10, 10, 15, 20 }
Ecrire une fonction "process" dont le corps est le suivant:
print f(a[i], a[j])
Définir les trois arguments de process:
- la fonction générique obtenue par l'instruction define,
- i et j les index dans le tableau a.
Faire deux appels de la fonction process, l'un avec compareInt, l'autre
avec addInt.
Cela doit afficher 1 et 35.
Réponse |
|