21 lines
717 B
Plaintext
21 lines
717 B
Plaintext
(defstruct Enemy [hp i32 name str])
|
|
|
|
(defonce spawned i32)
|
|
(defconst room-size 4)
|
|
(defonce room [room-size i32])
|
|
|
|
;; `set` takes a fixed list of forms, not an extensible setf.
|
|
(defn main [] ()
|
|
(let [e (Enemy {.hp 10 .name "slime"})
|
|
p (addr e)]
|
|
(set spawned (+ spawned 1)) ; a local or a defonce
|
|
(set (.hp e) 7) ; a struct field
|
|
(set (.hp p) 8) ; through a (Ptr Enemy) — derefs one level
|
|
(set (at room 2) 5) ; a fixed array or slice element
|
|
(set (deref p) (Enemy {.hp 3 .name "wisp"})) ; a whole-object store
|
|
|
|
(print (.hp e)) (println "")
|
|
(println (.name e))
|
|
(print (at room 2)) (println "")
|
|
(print spawned) (println "")))
|