【发布时间】:2010-12-13 20:30:24
【问题描述】:
假设我有一个 java.lang.Character 之类的 LazySeq
(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
如何将其转换为字符串?我已经尝试了明显的
(String. my-char-seq)
但它会抛出
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
我认为是因为 String 构造函数需要原始 char[] 而不是 LazySeq。所以我尝试了类似的东西
(String. (into-array my-char-seq))
但它会引发相同的异常。现在的问题是 into-array 返回的是 java.lang.Character[] 而不是原始的 char[]。这很令人沮丧,因为我实际上是这样生成我的字符序列的
(map #(char (Integer. %)) seq-of-ascii-ints)
基本上我有一个表示 ASCII 字符的整数序列; 65 = A 等。你可以看到我明确地使用了原始类型强制函数(char x)。
这意味着我的 map 函数返回一个原始 char 但 Clojure map 函数整体返回 java .lang.Character 对象。
【问题讨论】:
标签: map clojure types primitive-types coercion