[PHP] Fusion d'un tableau par addition - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [PHP] Fusion d'un tableau par addition (/showthread.php?tid=2142) |
RE: [PHP] Fusion d'un tableau par addition - srm - 19-03-2011 Et puis un petit exemple en Scala pour le fun
Je l'ai fait un peu à l'arrachage, ça fait bien 6 mois que je n'avais pas touché une ligne de Scala :D RE: [PHP] Fusion d'un tableau par addition - niahoo - 19-03-2011 Arf bon du coup ça m'a donné envie de le faire en erlang. c'était marrant mais il faut savoir avant toute chose que ce n'est pas du tout adapté à ce langage. Erlang est bien en dessous de php pour la gestion de tels tableaux.
Version avec des dicts
RE: [PHP] Fusion d'un tableau par addition - srm - 19-03-2011 C'est "particulier" ^^ RE: [PHP] Fusion d'un tableau par addition - niahoo - 19-03-2011 avec la couleur c'est plus lisible :p RE: [PHP] Fusion d'un tableau par addition - srm - 19-03-2011 Moui moui, je trouve la puissance de Scala plus sympa RE: [PHP] Fusion d'un tableau par addition - niahoo - 19-03-2011 Ah je ne cherchais pas la comparaison. Je dirais que j'apprécie erlang pour sa simplicité. le langage est super simple, un peu chiant à écrire mais en deux semaines tu sais tout écrire. le framework qui va avec est plus long à maîtriser mais il n'est pas indispensable (bien que vivement conseillé !). Ce que tu appelles puissance est un peu abstrait. Qu'entends tu pas la ? RE: [PHP] Fusion d'un tableau par addition - srm - 19-03-2011 Et bien par exemple l'implicit cast ce qui te permet de créer et les possibilités de nom et la façon d'utiliser les fonctions. Dans un autre langage on ferait : array2.add(array1) Dans Scala on peut faire : array2 add array1 Et on peut faire encore mieux car Scala autorise quasiment tout comme caractère en nom de fonction : array2 + array1 Ce qui rend le tout très sexy Et bien sûr on peut faire ça sans avoir à surcharger la classe HashMap grâce au implicit cast qui va automatiquement convertir un objet HashMap en HashMapImproved RE: [PHP] Fusion d'un tableau par addition - niahoo - 19-03-2011 Hmm les trucs implicites c'est un nid à bugs je trouve (enfin, le cast, virer les parenthèses des appels de fonctions ça c'est cool). edit : je reconnais que c'est pratique et élégant, mais j'aime pas. du code verbeux ne me dérange pas, surtout quand on voit le nombre de lignes très petit des programmes erlang. (ici l'exemple n'est pas adapté) je suppose que tu pouvais faire " array2 +++= array1 +++= array3 " ça donne [array2.+++=(array1).+++=(array3)] ou bien [array2.+++=(array1.+++=(array3))] J'ai le sentiment qu'on peut facilement se paumer dans son code avec tout ça. Erlang est à l'opposé, tout est clair (mis à part les records,des genres de struct C mais implémentées via un raccourci de compilation, un syntaxic sugar pas si sugar que ça). Quand tu parlais de puissance, je croyais que tu parlais des possibilités offertes par le langage. J'ai testé scala quand tu m'avais fait passer un document, j'avais commencé à m'y mettre et j'ai croisé erlang qui m'a plus plu, par la simplicité et il dispose du même modèle de message passing sauf qu'il n'y a pas d'objets, il y a simplement des fonctions. Il y a aussi les serveurs, qui sont finalement l'équivalent des objets. par serveur j'entends la fonction avec un receive qui s'appelle récursivement à l'infini mais dans un modèle "officiel" plus général et bien fichu, et simplissime. Personne n'a une implémentation dans un autre langage ? ça peut être intéressant. RE: [PHP] Fusion d'un tableau par addition - srm - 19-03-2011 Oui sauf que là c'est implicite seulement si tu lui a spécifiquement demandé : implicit def convertHashMap2HashMapImproved(hm: HashMap[String, Int]) = new HashMapImproved(hm) Donc tu sais ce que tu demandes De plus tu peux demander ce fonctionnement implicite dans le scope que tu veux. Ça peut-être à l'import du fichier (si tu le mets dans un fichier externe) dans ta main class, dans un if, ou tu veux. Et c'est une fonction très puissante cet implicite cast à la demande. Je n'ai pas parlé de mon exemple en disant que c'était mon verbeux, mais en montrant pourquoi c'était plus "propre" et "élégant". Je m'en moque aussi que ça soit verbeux Et non tu ne peux pas faire array +++= array1 +++= array3 Et je ne vois pas ce qu'il y a de pas clair à faire : array1 ++= array2 Tu vois bien que tu ajoutes deux tableaux, mais que ça n'est pas une addition banale vu que tu as ++= Pour respecter un peu le système de Ruby j'aurais très bien pu faire une fonction genre : array1 mergeWithSum! array2 Et je parle au niveau puissance en effet des possibilités offertes par le langage, vu qu'ici ça n'est qu'un exemple et j'en ai déjà donné plusieurs Sinon je serais curieux moi aussi de voir ce que l'on peut faire dans les autres langage RE: [PHP] Fusion d'un tableau par addition - niahoo - 19-03-2011 J'ai simplement peur que quand tu partages du code avec quelqu'un d'autre, les trucs implicites déclarés dans n'importe quel scope seront difficiles à déceler. edit : sinon, array2 +++= array1 c'est très clair, j'ai bien dit que ce type d'appel implicite n'était pas un problème, j'ajouterais que j'aimerais bien que ça soit possible dans d'autres langages, en erlang ça donnerai du haskell, en php ça ferait du ruby et ça serait cool. mais (voir en dessous) si ça s'annule des qu'il faut mettre plus de un paramètre ou chainer, c'estdommage) De plus, est-il possible d'appeler les méthodes du HashMap sur ton objet HashMapImproved que tu n'as pas redéfinies. Je suppose que oui donc ce n'est finalement pas un vrai problème, mais je sens que ça peut être gênant. (je "sens", tout ça est une question de feeling de toute façon) ce que tu dis à propos de la verbosité est contradictoire, l'élégance et la verbosité en terme de code sont vraiment opposés "Et non tu ne peux pas faire array +++= array1 +++= array3" tu peux faire "array2.+++=(array1).+++=(array3)" je supose. mais alors comment tu fais pour "additionner" non pas 2 mais 3 arrays ? (désolé si c'est évident, je ne l'ai pas lu, mais du coup enlever les parenthèses c'est bien beau mais si tu dois les remettre pour chaîner ça fait tache. |