如何在Clojure中创建一个“对象”的多个实例?
可以使用哪种Clojure方法在对象上创建多个实例,然后存储在Java ArrayList中?如何在Clojure中创建一个“对象”的多个实例?
我知道如何在Java中做到这一点,但我不知道如何用Clojure进行,任何帮助/指针将非常感激
看http://clojure.org/java_interop
(doto (new java.util.ArrayList)
(.add (new Object))
(.add (new Object)))
回报#<ArrayList [[email protected], [email protected]]>
有2种形式的Clojure中创建新对象。
(Classname. args*)
(new Classname args*)
所以这里是直接的例子,介绍如何在clojure中创建java对象。首先它是如何在Java里面看起来:
Thread thread = new Thread("Hi there");
Clojure的
; return instance of java.lang.Thread class
(new Thread "Hi there")
或另一种方式
(Thread. "Hi there")
为什么不向量存储?
user=> (def lst (atom []))
user=> (swap! lst conj "String")
user=> (swap! lst conj 123)
user=> @lst
["String" 123]
所以LST就像是一个C++结构? – 2013-03-14 10:34:21
@RicardoSanchez不,lst是一个包含矢量的原子。一个原子(有点,有点)就像一个C++中的指针,一个向量就像C++中的一个常量向量。那么这段代码在C++中的作用是:它创建一个名为'lst'的非const指针,指向一个const空向量。然后,它创建一个包含字符串“String”的const向量,并使'lst'指向该向量。然后它创建一个包含'“String”'和'123'的const向量,并使'lst'指向那个。然后它解除指针的引用。请注意,这不是你通常在Clojure中做的事情。 – sepp2k 2013-03-14 10:42:08
谢谢我知道如何与arraylist工作,但我不知道如何创建一个对象,并将它们存储在arraylist中,如果有意义的话 – 2013-03-14 10:33:07
@RicardoSanchez hsestupin的答案中的代码确实会创建两个对象并将它们存储在数组列表中。 – sepp2k 2013-03-14 10:36:24
@RicardoSanchez对不起,我没有udnerstand你的意思是什么 – hsestupin 2013-03-14 10:37:49