clojure filtre de la carte par des touches de

Je suis en suivant cet exemple: http://groups.google.com/group/clojure/browse_thread/thread/99b3d792b1d34b56

(voir la dernière réponse)

Et c'est le cryptique d'erreur que je reçois:

Clojure 1.2.1
user=> (def m {:a "x" :b "y" :c "z" :d "w"})
#'user/m
user=> (filter #(some % [:a :b]) m)
java.lang.IllegalArgumentException: Key must be integer
(user=>

Aussi je ne comprends pas pourquoi ce serait même travail. N'est pas (encore ...) retourne la première valeur correspondante, "x", à chaque fois? Je suis un total noob à clojure et juste essayer d'apprendre.

Merci de m'éclairer.

  • Le code de la ggroup thread-vous un lien vers résout un problème différent: "étant donné une collection de cartes et un jeu de clés, de retour d'une collection de précisément ceux de la donnée des cartes qui contiennent au moins l'une des touches". Ainsi, dans ce code, filter est censé fonctionner sur une collection de cartes, pas une seule carte; et ce #(...) bloc impliquant some est appropriée que si les cartes ne contiennent pas de nil ou false valeurs (comme mentionné dans le sujet), mais dans tous les cas, la fonction retourne seront appliquées (paresseusement) pour chacune des cartes à son tour.
  • ok ça explique mon incompréhension, merci.
InformationsquelleAutor Kevin | 2011-08-26