Appeler une fonction en transformant un tableau en la liste de parametres de la
leocd
Messages postés6Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention16 février 2009
-
15 févr. 2009 à 23:27
@karamel
Messages postés1840Date d'inscriptionvendredi 9 mai 2008StatutModérateurDernière intervention23 novembre 2023
-
19 févr. 2009 à 13:03
Bonjour à tous !
Bon ok, le titre n'est peu être pas très clair...
J'essaie d'être plus précis : j'ai un tableau T avec N éléments d'indices de 0 à N-1. je veux appeler une fonction myFunction avec tous les éléments du tableau comme paramètres, mais de telle sorte que chaque élément soit un paramètre.
l'équivalent de ceci :
myFunction(T[0], T[1], ..., T[N-1]);
sauf que N serait une variable.
Si quelqu'un savait faire ça, je le remercie d'avance.
A voir également:
Appeler une fonction en transformant un tableau en la liste de parametres de la
leocd
Messages postés6Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention16 février 2009 16 févr. 2009 à 11:00
Bien que ce soit effectivement une solution au problème, c'est pas vraiment ce que je cherche. Pour donner un exemple plus concret, on peut imaginer une fonction qui va en appeler une autre, avec une liste de parametres... bon ok pas très clair tout ça, je donne un peu de code :
function uneFonctionQuelconque(p1, p2, p3)
{
alert(p1+p2,+p3);
}
function uneAutreFonction(p1)
{
alert(p1);
}
function callAFunction(fct)
{
var i, a = callAFunction.arguments;
var b = new Array;
for(i = 1; i < a.length; i++)
{
b[i - 1] = a[i];
}
// a ce stade on a les parametres complementaires de la fonction dans b
// mtn on veut appeler la fonction
fct(je mets quoi ici ? en fait je ne sait pas par avance combien il y a de parametres);
}
// exemple d'appel
callAFunction(uneFonctionQuelconque, 101, 48, 78);
callAFunction(uneAutreFonction, 'kikou!');
------------------------------------------------------------
Oui je sais, présenté comme ça ca n'a aucun interet ... En fait il s'agit d'une bibliothéque, ici seule la fonction callAFunction est une fonction de la bibliothéque, et dans sa version complete, elle efectue certaines oppération avant d'appeler la fonction, elle a donc bien son utilité ^^ ...
leocd
Messages postés6Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention16 février 2009 16 févr. 2009 à 12:24
Tout d'abord merci pour tes réponses rapides !
On y est presque :-p
Cette partie du code je l'ai déjà dans callAFunction(fct) :
var i, a = callAFunction.arguments;
var b = new Array;
for(i = 1; i < a.length; i++)
{
//... ici on peut traiter tous les parametres (je commence à 1 car je connais déjà le premier)
}
maintenant imaginons que la fonction f que tu nous as écrit appelle une autre fonction g avec tous les parametres qu'elle a reçu en parametre. Existe t-il un moyen de renvoyer reellement une liste de parametres, sans renvoyer un tableau ( mais rteelement un nombre variable de parametre ).
En fait ce qui m'interesse c'est plus ou moins l'opposée de ce que tu nous proposes, c'est à dire envoyer un nombre n de parametres, un tableau par exemple, mais que la fonction puisse récuperer comme parametres indépendants, et non un seul tableau.
dans ton example on a une liste de parametres, qu'on lit dans un tableau. Moi j'ai un tableau et je veux en faire une liste de parametres pour appeler une fonction qui prend un nombre N de parametres.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 16 févr. 2009 à 12:36
>>imaginons que la fonction f que tu nous as écrit appelle une autre
fonction g
>>avec tous les parametres qu'elle a reçu en parametre.
ben... arguments.
si j'ai compris !!!!!
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 16 févr. 2009 à 13:04
oui.
arguments est un tableau des arguments passés
ce que tu veux faire est impossible !
tu ne connais pas le nombre de paramètres à mettre dans g
donc on ne peut pas décrire ainsi
fait g() et utilise y arguments,
pour l'appel de g... il te reste à le faire
tu peux regarder .caller ça te conviendra peut-être