IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ajout injection pour tableaux, fonction en argument


Sujet :

JavaScript

  1. #1
    seb92400
    Invité(e)
    Par défaut Ajout injection pour tableaux, fonction en argument
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    regarde ailleurs dans le code tu dois avoir la fonction fx() ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    seb92400
    Invité(e)
    Par défaut
    Hello,

    Bah justement, non... Le seul rapport entre les deux fonctions est l'appel de "inject" dans la fonction "sum", ce qui correspond en fait à l'argument "fx"...

    Et ce que j'aimerais donc savoir, c'est comment ça marche... D'après ce que je comprends, l'argument "fx" correspond à priori à la fonction "sum"... mais ce qui est flou pour moi, c'est seulement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    acc = fx(acc, this[index]);
    où "fx" correspond plus ou moins à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function(acc, num) {return acc + num;}
    Je sais que c'est pas très clair, mais je ne comprends simplement pas comment les variables sont transmises par l'intermédiaire de "fx" et à quoi correspond "num", le tout pour "simplement" réaliser une addition...

Discussions similaires

  1. [A03] docmd.openmodule pour une fonction avec argument
    Par cbleas dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/03/2009, 13h50
  2. Réponses: 6
    Dernier message: 31/07/2006, 16h01
  3. Réponses: 2
    Dernier message: 27/07/2006, 10h17
  4. Réponses: 9
    Dernier message: 17/02/2006, 11h04
  5. [Tableaux] demande de code pour une fonction.php
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2006, 17h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo