2013-03-13 69 views
0

我试图从这里http://toxiclibs.org/docs/core/如何连接来自Java类对象的静态方法?

这里找到了Vec2D类调用randomVector方法是我的代码:

(def particles (new ArrayList)) 


(defn add-particle [] 
    (dotimes [i 100] 
    (doto particles 
     ;(.add (new Vec2D (random (width)) (random (height)))) 
     (.add (Vec2D/randomVector)))) 

到目前为止好,但我需要调用其他方法,如规模和增加同样的课,我还没有知道该怎么做,在Clojure的

这里是如何我做到这一点在Java中:

Vec2D position = Vec2D.randomVector().scale(60).add(canvasCenter); 

任何帮助将非常感激

+0

可能重复http://stackoverflow.com/questions/5424520/how-can-i-call-a-java-static-method -in-clojure) – 2013-03-13 16:05:21

+0

关于链接方法的编辑:使用'..'或' - >'与'.'。这是一个重复的问题:http://stackoverflow.com/questions/8821751/how-do-i-create-a-java-like-object-in-clojure-that-uses-builder-pattern/8821948#8821948 – 2013-03-13 16:39:29

回答

2

尝试下面的代码,Java静态方法应该被称为像(ClassName/methodName arguments)

(defn add-particle [] 
    (dotimes [i 100] 
    (doto particles 
     (.add (Vec2D/randomVector))))) 

关于第二个问题,你需要定义canvasCenter一些地方的任何方式。

(defn add-particle [] 
     (dotimes [i 100] 
     (doto particles 
      (.add (.scale (Vec2D/randomVector) (float 60)) canvasCenter))) 
的[我怎么能说Clojure中的Java静态方法?(
+0

哦,谢谢Kugathasan我发现在另一个帖子上的答案有人指出我是重复的,但我编辑了问题,想知道如果你能帮助我 – 2013-03-13 16:24:37

+0

@RicardoSancher:你现在可以检查答案吗? – 2013-03-13 16:29:40

+0

还没有收到以下错误“没有找到匹配的方法:scale to class.geom.Vec2D”;) – 2013-03-13 16:32:34