比方说,我有一个LazySeq的java.lang.Character中的像
(\b \ \! \/ \b \ \% \1 \9 \/ \. \i \% \$ \i \space \^@)
Run Code Online (Sandbox Code Playgroud)
如何将其转换为String?我已经尝试过显而易见的事了
(String. my-char-seq)
Run Code Online (Sandbox Code Playgroud)
但它会抛出
java.lang.IllegalArgumentException: No matching ctor found for class java.lang.String (NO_SOURCE_FILE:0)
[Thrown class clojure.lang.Compiler$CompilerException]
Run Code Online (Sandbox Code Playgroud)
我认为因为String构造函数需要原始char []而不是LazySeq.那么我尝试了类似的东西
(String. (into-array my-char-seq))
Run Code Online (Sandbox Code Playgroud)
但它抛出同样的异常.现在的问题是into-array返回java.lang.Character []而不是原始char [].这很令人沮丧,因为我实际上是这样生成我的角色序列
(map #(char (Integer. %)) seq-of-ascii-ints)
Run Code Online (Sandbox Code Playgroud)
基本上我有一个表示ASCII字符的seq的整数; 65 = A等.您可以看到我明确使用原始类型强制函数(char x).
这意味着我的map函数返回一个原始char,但Clojure map函数整体返回java.lang.Character对象.
我有兴趣在CLR上调查Clojure.我看到有一个端口 -但我总是对这些二等公民有点怀疑(即他们没有原始的稳定性或功能).如果一般人们发现CLR上的Clojure不成熟,我就不太愿意花这么多时间 - 我现在根本没有时间或精力去解决一堆问题.另一方面,如果CLR上的Clojure看起来很好吃,我今天就开始潜水吧!
在CLR上有没有关于Clojure的实际经验?
任何有关CLR版本的建议和/或其他帮助也将受到赞赏.
在列表前面很容易:
user=> (conj '(:bar :baz) :foo)
(:foo :bar :baz)
Run Code Online (Sandbox Code Playgroud)
附加到矢量很简单:
user=> (conj [:bar :baz] :foo)
[:bar :baz :foo]
Run Code Online (Sandbox Code Playgroud)
在获取向量时,我如何(惯用)前置到向量?这不起作用,因为它返回seq,而不是向量:
user=> (cons :foo [:bar :baz])
(:foo :bar :baz)
Run Code Online (Sandbox Code Playgroud)
这很难看(IMVHO):
user=> (apply vector (cons :foo [:bar :baz]))
[:foo :bar :baz]
Run Code Online (Sandbox Code Playgroud)
注意:我基本上只想要一个可以附加和前置的数据结构.附加到大型列表应该有很大的性能损失,所以我想到了矢量..
在Clojure中设置ref值的3种方法有什么区别?我已经多次阅读过关于ref-set,commute和alter的文档.我很困惑哪些时候可以使用哪些.有人可以简要介绍一下这些差异是什么以及为什么需要这些差异?
我们将使用Clojure编写并发程序,该程序将从大量传入邮件中提取关键字,这些邮件将与数据库进行交叉检查.
我的一个队友建议使用Erlang编写这个程序.
在这里,我想要注意一些我对函数式编程不熟悉的东西,所以我有点怀疑clojure是编写这个程序的好选择,还是Erlang更适合.
我正在使用ring和clojure编写Web应用程序.我使用jetty适配器开发服务器和emacs/SLIME for IDE.虽然wrap-reload确实有帮助,但run-jetty会阻止我的粘贴会话,我希望能够随意启动/停止它,而无需在单独的终端会话中运行它.理想情况下,我想定义一个服务器代理和函数start-server和stop-server,它们将启动/停止代理中的服务器.这可能吗?
在Clojure nil?检查为零.如何检查不是零?
我想做Clojure相当于以下Java代码:
if (value1==null && value2!=null) {
}
Run Code Online (Sandbox Code Playgroud)
后续行动:我希望不用零检查,而不是用它包裹not.if有一个if-not对应物.是否有这样的对应物nil??
我发现自己做了很多:
(concat coll [e]) 其中coll是一个集合,而ea是一个单独的元素.
在Clojure中有没有这样做的功能?我知道conj对矢量做的最好,但我不知道前面会使用哪种coll.例如,它可以是矢量,列表或排序集.
谁能解释或指出我在哪里可以找到clojure的命名约定:
我在我的Clojure项目(GUI应用程序)中使用Leiningen,并在项目根目录下创建了一个"resources"目录来保存我的应用程序使用的图像.
当我在测试期间在本地运行我的应用程序时,我使用相对路径"resources/logo.png"获取图像,这样可以正常工作.但是当我使用Leiningen构建一个uberjar时,Leiningen将来自资源文件夹的文件放在JAR的根文件夹中,因此我对资源文件的引用不再起作用.
使用Leiningen访问这样的资源的正确方法是什么?
clojure ×10
append ×1
clojureclr ×1
clr ×1
coercion ×1
collections ×1
concurrency ×1
erlang ×1
jetty ×1
leiningen ×1
map ×1
prepend ×1
ring ×1
types ×1
vector ×1