Je suis nouveau à Clojure. J'essaie d'utiliser Java Hashmap à Clojure. Je passe un haschmap Java à Clojure. La carte est-{0 = Goa, 1 = Delhi, 2 = mumbai}. Lorsque j'essaie d'utiliser les fonctions de clojure sur cette carte, je ne reçois pas la sortie attendue. Contrairement à cela lorsque je suis itération sur cette carte, il donne la production attendue.
Example
(println(get map 0)) is giving nil
(doseq [[key value] map
(println value)) is giving the expected output.
Output-Goa
Delhi
Mumbai
3 Réponses :
Je pense que votre problème est que votre carte est nommée "carte" qui est également une fonction de clojure. Essayez-la comme ceci: qui fonctionnera alors comme ceci: p> Notez qu'il retourne toujours nil, car il n'y a toujours rien d'autre Après la forme (printLN), mais il imprime la valeur du 0 sur la carte, qui est "Goa". P> P>
Bien qu'il soit vrai que vous ne devriez pas utiliser cartographier code> comme nom de votre carte, si vous l'essayez sur le repli, vous devez simplement obtenir un avertissement comme AVERTISSEMENT: la carte fait déjà référence à: # ' clojure.core / carte dans l'espace de noms: utilisateur, étant remplacé par: # 'Utilisateur / carte Code>. Cela causerait un comportement bizarre si vous essayez ensuite naïvement d'utiliser la fonction Normal Clojure Carte CODE>, mais ne causerait pas de problème spécifique décrit ici.
@Benschmidt Merci pour la clarification. Ce n'est pas totalement clair pour moi où sa "carte" est issue de cette partie du code de la question initiale.
Vous devriez vraiment faire un bit Google pour trouver des réponses préexistantes comme celle-ci: Clojure: Travailler avec une java.Util.Hashmap dans une mode de clojure idiomatique
Vous pouvez alors voir une réponse simple: p> qui nous donne: p> et boucle: p> avec résultat: p>
(map print input-map)
S'il vous plaît soyez conscient de la façon dont vous marquez vos questions. Compte tenu de votre question n'est pas sur Java , attirant des experts Java à votre question ne va pas vous aider.