Lassen Sie uns sagen, ich habe eine LazySeq von java.lang.Character wieWie kann ich ein LazySeq Zeichen in Clojure in einen String konvertieren?
(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
Wie kann ich dies in einen String konvertieren? Ich habe versucht, die offensichtlichen
(String. my-char-seq)
aber es wirft
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
Ich denke, da das String-Konstruktor einen primitiven char erwartet [] anstelle einem LazySeq. Also habe ich etwas wie
(String. (into-array my-char-seq))
versucht, aber es löst die gleiche Ausnahme aus. Das Problem besteht nun darin, dass in-array einen java.lang.Character [] anstelle eines primitiven char [] zurückgibt. Das ist frustrierend, weil ich generieren tatsächlich meine Zeichenfolge wie diese
(map #(char (Integer. %)) seq-of-ascii-ints)
Im Grunde habe ich eine seq von Ints ASCII-Zeichen darstellen; 65 = A, etc. Sie können sehen, ich verwende explizit die primitive Art Zwangsfunktion (char x).
Was dies bedeutet, ist, dass meine Karte Funktion einen primitiven char kehrt aber die Clojure Karte Funktion Gesamt kehrt das java.lang.Character Objekt.