7
votes

Restructuration de la carte

dans le clojure, je peux déstructurer une carte comme ceci: xxx pré>

qui est similaire à la méthode du CoffeScript: p> xxx pré>

Coffescript peut aussi Faites ceci: p>

a = 1
b = 2
obj = {a, b} // just like writing {a: a, b: b}


0 commentaires

4 Réponses :


1
votes

La réponse courte est: non.

La raison principale est qu'en clojure, pas seulement des mots-clés, mais toute valeur peut être utilisée comme clé sur une carte. En outre, les virgules sont des espaces dans le clojure. Donc {a, b} est identique que {ab} et entraînera une carte avec une paire à valeur de clé, où la clé est autre que a < / code> évalue à.

Vous pouvez toutefois écrire une macro qui prend une liste de symboles et crée une carte avec les noms des symboles (convertis en mots-clés) comme des clés et des évaluations des symboles comme valeurs.


0 commentaires

2
votes

J'ai écrit une macro simple pour cela dans utile , qui vous permet d'écrire cela comme (clé [ab]) . Ou vous pouvez parallèlement le: STRS et: SYMES Comportement de la carte de la carte avec (Keyed: STR [AB]) , qui se développe à {"A" A, "B" B} .


2 commentaires

utile est en effet utile! Y a-t-il une documentation n'importe où?


@benekastah pas vraiment. Vous pouvez lire la source et regarder les tests - la plupart des fonctions sont testées d'une manière qui permet d'effacer la façon dont elles sont censées être utilisées.



10
votes

Ce n'est pas fourni, mais peut être mis en œuvre avec une macro assez simple:

user=> (def x 1)   
#'user/x
user=> (def y 2)
#'user/y
user=> (def z 3)
#'user/z
user=> (rmap x y z)
{:z 3, :y 2, :x 1}


0 commentaires

0
votes

Je ne pense pas que cela soit fourni hors de la boîte à Clojure .. Mais bon cela est Lisp et nous pouvons utiliser des macros pour avoir quelque chose comme ceci: xxx

utilisation: xxx

résultat serait votre carte


0 commentaires