Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
Ceylon : Installation - Concepts de base - Typage - Appels et arguments
ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
Une solution vous convient ? N'oubliez pas le tag
Signature par pitipoisson
On peut faire plus explicite tout en étant concis
Le fait d'être verbeux n'apporte pas tout le temps de la clarté. Très souvent en Scala, le code colle de très près à l'algo, il y a très peu de code de contexte comme la déclaration de variables temporaires. Après à etre trop concis, on en perd de la clarté, je suis d'accord.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 values.foldLeft(0)((result: Int, current: Int) => result + current)
En faite c'est surtoutque je trouve pas super explicite. Ca renvoie quoi ? Une collection ? Un itérateur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part foldLeft(0)
Et j'aurais préféré un truc du genreoù opération prend un élément du type de la collection en paramètre et renvoie un type quelconque. Le résultat étant du type résultant de l'opération.
Code : Sélectionner tout - Visualiser dans une fenêtre à part collection.join(operation)
Ou alorsdans ce cas operation prend toujours le même paramètre mais ne renvoie rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part collection.apply(operation)
Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
Ceylon : Installation - Concepts de base - Typage - Appels et arguments
ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
Une solution vous convient ? N'oubliez pas le tag
Signature par pitipoisson
L'opérateur fold est un opérateur classique sur les collections dans les langages fonctionnels. Ensuite pour comprendre ce que retourneil faut connaître un peu scala. En gros ça retourne une fonction qui accepte un paramètre de type fonction et retourne un entier (dans ce cas précis). Scala ici n'a rien inventé, mais a juste les opérateurs fonctionnels classiques tel que map, filter, foreach, foldLeft, foldRight… qui sont ma foi très pratiques !
Code : Sélectionner tout - Visualiser dans une fenêtre à part foldLeft(0)
Il faut juste se faire à la logique fonctionnelle, mais c'est très agréable et pratique
Ok ! J'avais fait un peu d'Haskell mais rien de bien méchant. Je n'avais jamais utilisé "fold".
Je suppose que 0 c'est le premier indice et "left" indique le sens de parcours ? On ne peut donc que renvoyer un int ?
Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
Ceylon : Installation - Concepts de base - Typage - Appels et arguments
ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
Une solution vous convient ? N'oubliez pas le tag
Signature par pitipoisson
0 c'est la valeur initial. A chaque appel, on prend le résultat de l'appel précédent
Cela dit c'est une méthode générique dont tu peux renvoyer ce que tu veux. Il se base sur le type du premier lot de paramètres (le(0))
Voici sa signature:
A étant le type d'objet contenu dans la liste
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 def foldLeft[B](z: B)(f: (B, A) => B): B
Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
Ceylon : Installation - Concepts de base - Typage - Appels et arguments
ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
Une solution vous convient ? N'oubliez pas le tag
Signature par pitipoisson
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager