(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)
)
私は以下を取得します
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 次元配列コンテキストでの使用法が正しくないと思われますが、かなりの数時間の検索の後に得られたものです。
編集::
(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 ..) をどこに配置すれば、例外もスローされるのでしょうか?