68 lines
1.9 KiB
Plaintext
68 lines
1.9 KiB
Plaintext
;;;; get over an array, a slice, a string and a Vec is at that answers None
|
|
;;;; for an index out of range, negative included, one index per dimension.
|
|
;;;; Over a dyn it answers nil, and more keys walk a level each.
|
|
|
|
(defn show [o (Option i32)] ()
|
|
(match o (Some v) (println v) None (println "none")))
|
|
|
|
(defn three [] (Vec i32)
|
|
(let [v (vec-new i32)] (push v 10) (push v 20) (push v 30) v))
|
|
|
|
(defn dvec [] dyn [10 [20 21] 30])
|
|
(defn dmap [] dyn {:a 1 :b [5 6]})
|
|
(defn dtext [] dyn "hey")
|
|
|
|
(defn main [] ()
|
|
(let [a [1 2 3]
|
|
grid [[1 2 3] [4 5 6]]
|
|
s (slice a)
|
|
v (three)
|
|
n (length a)
|
|
vv (vec-new (Vec i32) context/temp)]
|
|
(push vv v)
|
|
;; -1, 0, len-1 and len on an array.
|
|
(show (get a -1))
|
|
(show (get a 0))
|
|
(show (get a (- n 1)))
|
|
(show (get a n))
|
|
;; Two dimensions, each tested.
|
|
(let [r 0 c 1]
|
|
(show (get grid (+ r 1) (- c 1)))
|
|
(show (get grid (- r 1) c))
|
|
(show (get grid r (+ c 2))))
|
|
(show (get grid 1 2))
|
|
(show (get grid 2 0))
|
|
;; A slice.
|
|
(show (get s 2))
|
|
(show (get s 3))
|
|
;; A Vec, and one a call answered.
|
|
(show (get v -1))
|
|
(show (get v 0))
|
|
(show (get v 2))
|
|
(show (get v 3))
|
|
(show (get (three) 1))
|
|
;; A Vec of Vecs: the inner length is tested only once the outer index is.
|
|
(show (get vv 0 2))
|
|
(show (get vv 0 3))
|
|
(show (get vv 1 0))
|
|
;; A string's byte.
|
|
(match (get "hey" 1) (Some b) (println b) None (println "none"))
|
|
(match (get "hey" 3) (Some b) (println b) None (println "none")))
|
|
;; Dyn.
|
|
(let [d (dvec) m (dmap)]
|
|
(println (get d -1))
|
|
(println (get d 0))
|
|
(println (get d 2))
|
|
(println (get d 3))
|
|
(println (get d 1 1))
|
|
(println (get d 1 2))
|
|
(println (get d 5 0))
|
|
(println (get m :a))
|
|
(println (get m :z))
|
|
(println (get m :b 1))
|
|
(println (get m :z 1))
|
|
(println (.a m))
|
|
;; Dyn text: get counts it as at does.
|
|
(println (get (dtext) 1))
|
|
(println (get (dtext) 3))))
|