7
votes

Convertir les touches et les valeurs de la carte au tableau de chaîne

Comment convertir une carte de clojure en chaîne, une paire de valeurs presque essentielle, comme indiqué ci-dessous:

Data Clojure: P>

(map name (apply concat data))


0 commentaires

4 Réponses :


8
votes

Cela devrait faire l'affaire:

(apply nn/add-to-index (list* (:id node) (:name idx) (map name (apply concat data))))


7 commentaires

Salut merci! cela me fait presque me faire là-bas, mais j'ai des bretelles autour de la chaîne .. comme: ("Starks" "Winter arrive" "Lannisters" "Entendre moi Roar") - Essayer de convertir en String et le remplacement ne fonctionnent pas comme prévu .. Comment puis-je vous débarrasser des accolades s'il vous plaît? J'en ai juste besoin comme une corde, par exemple


@Locusthorde OK, j'ai mis à jour ma réponse. J'espère que c'est ce que vous cherchez.


Bonjour, désolé, je ne peux pas communiquer correctement, j'ai besoin de la gamme de chaînes, avec des clés et de leurs valeurs respectives côte à côte. Je vais mettre à jour la question .. Merci beaucoup.


En fait, une seconde pensée, je pourrais peut-être travailler avec cela, laissez-moi l'essayer et revenir s'il vous plaît. Merci.


Bonjour, désolé, malheureusement, je ne pouvais pas le faire travailler. J'ai ajouté plus de détails, si cela est de toute aide. Merci.


Ok, alors je lui ai donné un dernier coup :)


J'aimerais que je puisse choisir plus d'une réponse, car cela répond parfaitement à ma question initiale, merci beaucoup Marius



2
votes

Vous pouvez utiliser le vecteur pour avoir un tableau comme un accès aléatoire: xxx


0 commentaires

2
votes

Vous pouvez essayer ce qui suit:

=> (interleave (map name (keys data)) (vals data))

;; which returns ("starks" "Winter is coming" "Lannisters" "Hear me roar")


1 commentaires

Bonjour, merci, cela donne le même résultat que la réponse de Marius Danila. La dernière réponse sur cette question me dit que la fonction ne prend pas en réalité plus de 4 arguments.Je jure, je pensais que je pouvais transmettre de nombreux arguments! mais merci!



2
votes

Le (nn / add-to-index ...) code> La fonction n'accepte simplement que quatre arguments. Le nœud, l'index et une paire de clé / valeur. Donc, vous avez trop de boucler dans vos données comme.

(doseq [[k v] data]
  (nn/add-to-index (:id node) (:name idx) (name k) (clojure.string/lower-case v))))


2 commentaires

Ooh, cela fait tellement de sens maintenant! Merci beaucoup, modifiera mon code pour le refléter. Merci encore!


Oui, cela fonctionne parfaitement, merci! Je jure que je pourrais ajouter plusieurs propriétés en même temps .. Mais évidemment, je pense à autre chose. Merci encore!