J'ai un code qui procède aux éléments suivants: L'absence d'une fonction de retour dans F # rend ce code assez ballonné. Y a-t-il un moyen plus concis et idiomatique d'interrompre les boucles et de renvoyer un résultat en F #? Tout ce que j'ai trouvé jusqu'à présent est assez similaire à ce que je fais. p> p>
3 Réponses :
Tout d'abord, vous ne définissez pas ce que vous entendez par "ballonné". Qu'est-ce que tu es après? Moins de variables? Moins de lignes de code? Quelque chose d'autre?
La manière habituelle des boucles d'écriture dans la programmation fonctionnelle est via Récursion: P>
let rec loop retries = let result = try something if result = success then Some result elif retires <= 0 then None else some delay loop (retries - 1) loop 10
permet de dire que vous avez une fonction qui retourne true lorsqu'elle est passée 3 par. Vous pouvez casser la boucle à l'aide de SEQ.SKIPHILE. Il n'exécutera que 3 fois 3 fois pas 10. Enfin, cela reviendra (vrai) car il réussit. Si vous définissez P> let f n = n= 11
idiomatiquement il ne devrait y avoir aucun état mutable (supplémentaire).
La route explicite consiste à le faire dans une fonction récursive, quelque chose comme; p> vous pourriez probablement faites-le avec un seq.unfold et un SEQ.LAST ... mais cela peut être plus convolué p> p>