Hãy nói rằng tôi có một LazySeq của java.lang.Character nhưLàm cách nào để chuyển đổi một ký tự LazySeq thành một chuỗi trong Clojure?
(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
Làm thế nào tôi có thể chuyển đổi này vào một String? Tôi đã cố gắng rõ ràng
(String. my-char-seq)
nhưng nó ném
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
Tôi nghĩ rằng bởi vì các nhà xây dựng chuỗi hy vọng một char nguyên thủy [] thay vì một LazySeq. Vì vậy, sau đó tôi đã thử một cái gì đó như
(String. (into-array my-char-seq))
nhưng nó cũng ném cùng một ngoại lệ. Vấn đề bây giờ là thành mảng đang trả về một java.lang.Character [] thay vì một số nguyên thủy char []. Điều này thật khó chịu, bởi vì tôi thực sự tạo chuỗi ký tự như thế này
(map #(char (Integer. %)) seq-of-ascii-ints)
Về cơ bản tôi có một số nguyên nhân đại diện cho các ký tự ASCII; 65 = A, v.v. Bạn có thể thấy rõ ràng tôi sử dụng hàm cưỡng chế kiểu nguyên thủy (char x).
Điều này có nghĩa là đồ chức năng của tôi đang trở lại một nguyên thủy char nhưng Clojure đồ chức năng tổng thể được trả lại java.lang.Character đối tượng.