1
(declare storage)
(defn initialize-storage []) ((def storage
(make-array Integer/TYPE 3 3))
(for [ i (range 1 3)
j (range 1 3)]
(aset (aget storage i) j 100)
)
(use 'clojure.pprint)
(pprint storage)
)
調用函數,我得到了下面aset和aget無法正常工作?和其他功能
ClassCastException [[I cannot be cast to clojure.lang.IFn clojure.lang.Var.fn (Var.java:378)
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
的想法是所有的值設置爲100
我懷疑我的使用情況ASET的2-d陣列上下文不正確,但這是我經過幾個小時的搜索後得到的。
編輯::
(use 'clojure.pprint)
(defn initialize-storage []) ((def storage
(make-array Integer/TYPE 3 3))
(for [ i (range 1 3)
j (range 1 3)]
(aset-int storage i j 100))
(pprint storage))
現在,我已經把我的存儲。我想有另一個函數,它會調用這個函數,然後繼續執行其他任務。但我得到一個例外,找不到initialise-storage
。
如何在這方面有一個名稱空間的幫助? 這些功能是否意識到彼此的存在,還是我們需要讓他們公開並公開? 所有這些應該在命名空間內嗎? 那麼,如果我把(def ..)放在哪裏,那麼也會拋出異常呢?
dorun這裏是如此......你可以就如何一般性指導在clojure中是懶惰的作品,我應該什麼時候尋求熱切的評價? – 2012-07-19 21:43:14
另外,(aset array x y 42)給出IllegalArgumentException參數類型不匹配java.lang.reflect.Array.set(:-2) – 2012-07-19 21:43:36
但是我希望存儲保持在其他函數可以對其進行操作的狀態。我猜我的代碼沒有顯示我的意圖 – 2012-07-19 21:46:44