这是在 CLojure 中,首先是我的代码:
;cell structure
(defstruct cell :x :y :highland :lowland :obstacle :ammo :tank)
;demension
(def dim 0)
(defn setdim [num]
(def dim num))
;create world
(defn creatworld []
(apply vector
(map (fn [_]
(apply vector (map (fn [_] (struct cell))
(range dim))))
(range dim))))
;initiate coordinate for structure in vector of vector
;this is not working
(defn inicoor [world]
(map
#(assoc % :x i :y j)
world))
(defn inicoor [world]
(dorun (for [i (range 0 dim)]
(dorun (for [j (range 0 dim)]
(map
# (assoc (nth (nth world i) j) :x i :y j)))))))
所以,我正在做的是尝试使用二维结构向量创建一个二维世界。创建世界后,我希望启动 xy 坐标作为实际坐标,就像我在最后一个函数中尝试的那样。但是,由于 clojure 是可变的不可变的,它不会改变值......而且它也不会返回新数据的 2d 向量......然后我尝试使用 map ......但我对 clojure 真的很陌生。 ..几次尝试后没有工作...
谁能告诉我该怎么做?非常感谢...
add:目标结构是这样的:
[ 00 10 20 30 40 50 ] (this is the first vector)
01 11 21 31 41 51
02 12 22 32 42 52
03 13 23 33 43 53
04 14 24 34 44 54
05 15 25 35 45 55
这就是我一开始使用嵌套循环的原因......在java中最常见的方法......