2013-03-13 38 views
1

我試圖填充Clojure中的一個ArrayList,但我得到了以下錯誤消息如何在Clojure中填充ArrayList?

java.util.ArrayList中不能轉換到clojure.lang.IFn

這裏是我的代碼:

(ns blackhole-v1.core 
    (:import [java.util ArrayList]) 
    (:import [toxi.geom Vec2D]) 
    (:use [quil.core])) 


(def particles (new ArrayList)) 


(defn add-particle [] 
; (particles (.add (new Vec2D (random (width)) (random (height))))) 
    (doto (particles) 
    (.add (new Vec2D (random (width)) (random (height)))))) 


(defn setup [] 
    (smooth) 
    (background 0) 
    (add-particle)) 


(defn draw [] 
    (background 0) 
    (dotimes [i (.size particles)] 
    (ellipse (.x (.get particles i)) (.y (.get particles i)) 20 20))) 


(defsketch blackhole-v1 
    :title "black hole v1" 
    :setup setup 
    :draw draw 
    :size [640 480]) 

任何想法我做錯了什麼?

回答

4

您正試圖呼叫(particles)作爲一個功能,但它只是簡單的變種。而不是(particles)使用particles

(defn add-particle [] 
; (particles (.add (new Vec2D (random (width)) (random (height))))) 
    (doto particles 
    (.add (new Vec2D (random (width)) (random (height))))))