Pour moi, c'est un cas d'utilisation classique pour l'interface utilisateur monadique.
for {
opt <- iterable
t <- opt
} yield t
Il est juste de sucre pour la solution flatMap
décrite ci-dessus, et il produit bytecode identiques. Cependant, la syntaxe est importante, et je pense que l'un des meilleurs moments pour utiliser la syntaxe monadique for
de Scala est quand vous travaillez avec, particulièrement en conjonction avec des collections.
Je pense que cette formulation est considérablement plus lisible, en particulier pour ceux qui ne sont pas très familiers avec la programmation fonctionnelle. J'essaie souvent à la fois les expressions monadiques et fonctionnelles d'une boucle et vois ce qui me semble plus simple. Je pense que flatMap est un nom difficile pour la plupart des gens à grok (et en fait, l'appeler >>=
me semble plus intuitif).
En sachant qui vous êtes (à partir de la liste de diffusion scala-user), vous avez raison j'en suis sûr (je n'ai pas accès à mon environnement de développement Scala en ce moment :-). Pouvez-vous expliquer un peu comment cela fonctionne. Je promets que je ne suis pas un idiot mais je n'ai aucune idée de comment je serais censé obtenir cela du scaladoc –
Ne serait-ce pas "it flatMap {_ elements}"? (J'ai encore lu le scaladoc!) –
Ce serait génial de voir plus de gourous Scala sur StackOverflow. La liste de diffusion scala-user remplit ma boîte de réception avec des arcanes sur break/continue :-) –