En gros, tu pourrais retourner plusieurs variables...
Dans une extension du language, par exemple.
Bon, le truc, c´est que c´est plutôt une idée en l´air. Pour implémenter ça, il me faudrait changer du code d´un compilateur open-source ( GCC? Oulah...) ou encore faire le mien ( Mon compilo? Oulah...), bref, rien de facile et d´évident, et je sais pas si ça vaudrait toute cette peine...
Sinon, Chris_le_ouf m´a posé une bonne question:
opurquoi, au lieu de fonction(paramètres)@(x,y,z), on ferait pas tout bêtement, x,y,z = fonction(paramètres)?
Bon, je n´y vois qu´un gros inconvéniant:
les opérateurs...
Y´a l´ambiguité de l´opérateur virugle:
printf(StringPtr,StringNumber=GetString(NULL));
Soit getString une fonction retournant deux valeurs. Ici, virgule sépare-t-il les paramètres, ou les valeurs de retour? Pour le compilateur, ça ne marche pas... parce que, si c´est les paramètres, = met quelle valeur de retour dans StringNumber? D´un autre côté, dans le cas des retours, laquelle des valeurs de retour sert de chaines de caractères à printf?
Ça vient au deuxième problème: = retourne quoi dans ce cas? Dans un cas normal, il retourne la valeur unique, mais dans un cas avec plus d,une valeur, il retourne laquelle? Il en retourne pas? Ça signifirait plus de code parce que l´on ne pourrais plus compacter le code comme on pouvait le faire, avec les ifs:
if(valeur = fonction(param1,param2)
{}
vérifiant si la avleur était ! =0...
Une solution pour le un serait les parenthèses. Mais comme toujours avec les parenthèses, ça devient vite chiant, par ce que ça en rajoute toujorus plus dans la ligne de code...
Bien sur, pour le compilateur, pas de problème:
c´est pour le programmeur le problème! Son code devient plus étendu, plus gros, pour rien!
Ironiquement, c´est pour le programmeur, ce truc, la retour de valeurs multiples! Pour le compilo, il s´en fous: que ça soit par pointeur/référence dans les params, ou comme ça, il s´en tabasse royalement...
Alors, si c´est pour le programmeur, ça serait totalement absurde de le faire chier encore plus! Ça n´en vaudrait donc pas la peine, à mon avis...
Par contre, le @ n´a pas ces ambiguités:
de pars l´opérateur @() est unique, mais @n est flexible pour le compilo, et le programmeur en a moins à se préoccuper. Là ça deviendrais envisageable, à mon avis.
Autre question: que retournerais l´opérateur @()? Ça reviens au même que l´opérateur égal, non? Ben non, ce n´est pas pareil, car il permet au compilo d´associer les @n...
Niveau valeur de retour, je ne sais pas encore, mais je crois que ça retournerais un v1 || v2 || v3 || . .. || vn... donc 0 s´ils sont tous égals à zéro, 1 s´il y en a au moins un de positif. Mais ça pourrais changer.
Comme d´habitude, un avis est toujours le bienvenu
Kelios
---------