Bonjour,
Je ne cherche pas à trouver un bug, la fonction suivante fonctionne bien. C'est une fonction que j'ai trouvée dans un livre et qui permet l'ajout d'une fonction d'injection à un tableau.
Mon problème, et c'est là que j'ai besoin de vos lumières, c'est que bien qu'ayant compris le fonctionnement global (externe) de cette fonction, il y a une ligne qui me pose problème pour la compréhension interne...
La fonction :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Array.prototype.inject = function(fx, acc) {
if (0 == this.length)
return acc;
var start = undefined === acc ? 1 : 0;
if (undefined === acc)
acc = this[0];
for (var index = start; index < this.length; ++index)
acc = fx(acc, this[index]);
return acc;
} // inject
Array.prototype.sum = function() {
return this.inject(function(acc, num) {
return acc + num;
});
} // sum |
La ligne qui me pose problème c'est :
acc = fx(acc, this[index]);
Je ne comprends pas ce que signifie cette ligne, (fx étant à priori le premier argument de la fonction "inject"), et ce premier argument étant donc notamment la fonction "sum" juste en dessous, il doit donc s'agir d'une récursivité...
Bref... là, je bloque, car je ne comprends pas l'appel entre ces deux fonctions, comment les variables et les résultats sont transmis, le fait que le premier argument de "inject" dans la fonction "sum" soit une fonction et comment la relation est faite entre ses arguments et ceux de la ligne que je ne comprends pas...
Merci d'avance pour vos explications. Ca m'ennuie de recopier du code qui marche, certes, mais que je ne comprends pas...
Partager