Disons que j'ai un LazySeq de java.lang.Character commeComment puis-je convertir un LazySeq de caractères en une chaîne dans Clojure?
(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
Comment puis-je convertir en une chaîne? J'ai essayé l'évidence
(String. my-char-seq)
mais il jette
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
Je pense que le constructeur String attend un primitif char [] au lieu d'un LazySeq. Alors j'ai essayé quelque chose comme
(String. (into-array my-char-seq))
mais il lance la même exception. Le problème est maintenant que dans le tableau renvoie java.lang.Character [] au lieu d'une primitive char []. Ceci est frustrant, parce que je générer effectivement ma séquence de caractères comme celui-ci
(map #(char (Integer. %)) seq-of-ascii-ints)
Fondamentalement, j'ai un seq de ints représentant des caractères ASCII; 65 = A, etc. Vous pouvez voir que j'utilise explicitement la fonction de coercition de type primitif (char x).
Ce que cela signifie est que ma carte fonction renvoie une omble primitive mais le Clojure carte fonction est de retour ensemble du java.lang.Character objet.