Celui-ci m'a dérangé depuis un moment maintenant,
Comment devrions-nous stocker une valeur dans un ensemble ou une carte dans A pour boucle? Je sais que cela ne fonctionnera pas, mais je veux une fonctionnalité similaire à celle-ci, où l'ensemble contiendra enfin [ 0 0] [0 1] ... [0 9] [1 0] ... [9 9] P> Merci P> P>
5 Réponses :
Clojure a plusieurs excellents systèmes de gestion de l'état mutable. Dans ce cas, vous pouvez vouloir un Atom contenant un ensemble
Vos autres options sont les suivantes: p>
bien sûr pour code> retourne déjà une séquence afin que vous puissiez juste vouloir p>
Le premier extrait de code ici n'a aucun sens, autant que je puisse dire? Ce n'est pas un moyen valide d'utiliser swap! Code>, et comme vous le mentionnez ultérieurement, ce n'est pas une bonne idée de toute façon.
Le premier Snipit n'était pas vraiment le point de la réponse, donc je viens de l'enlever. Posant des tests Tisk Tisk i>
Si je comprends votre question correctement, vous devez transformer votre expression à l'envers: la chose à réaliser ici est que pour code> renvoie une valeur (une séquence paresseuse) contrairement à des boucles de plus langues impératives comme Java et c. P> p>
est-ce ce que vous voulez? et si vous voulez juste que la liste sous forme de jeu: p> vous finirez par finir avec un ensemble de paires. p> p>
généralement em> lorsque vous souhaitez renvoyer un ensemble ou une carte ou une autre "valeur unique" qui n'est pas un SEQ d'une opération généralisée "répétée" sur un SEQ, en utilisant Réduire est plus idiomatique / simple que boucle / recur code> et pour code> retourne toujours un SEQ (pas un jeu ou une carte). (reduce + 0 (range 100))
=> 4950
Je pense que vous pouvez également utiliser une structure de données transitoire dans ce scénario.
(let [s (transient #{})]
(for [ i (range 10)
j (range 10) ]
(assoc! s i j)))
(persistent! s)
Ce n'est pas correct. De Les docs pour les transitoires : "Notez en particulier que les transitoires ne sont pas conçus pour être intégrés à la place. Vous devez Capturez et utilisez la valeur de retour dans l'appel suivant. De cette manière, ils supportent la même structure de code que le code persistant fonctionnel qu'ils remplacent ».
Merci à tous, pour les réponses.