rs
- это последовательность (список), представляющая все записи в вашем наборе результатов.Каждый элемент rs
представляет собой хэш-карту, представляющую одну запись, а пары ключ / значение на карте представляют имена полей и значения для этой записи.Вы пытаетесь сделать эквивалент этого:
user> (let [rs [{:id 1 :val "foo"} {:id 2 :val "bar"}]]
(doseq [[k v] rs]
(println v)))
; Evaluation aborted.
; nth not supported on this type: PersistentArrayMap
Это пытается разложить каждую карту на [k v]
, делая грубый эквивалент этого:
user> (let [k (nth {:id 1 :val "foo"} 0)
v (nth {:id 1 :val "foo"} 1)])
; Evaluation aborted.
; nth not supported on this type: PersistentArrayMap
Если выВы пытаетесь напечатать значение для каждого поля в каждой записи, вам необходимо сделать следующее:
user> (let [rs [{:id 1 :val "foo"} {:id 2 :val "bar"}]]
(doseq [record rs
[k v] record]
(println v)))
foo
1
bar
2
"Для каждой записи в наборе результатов, для каждого ключа / значения в этой записи выведите значение."
Если ваш набор результатов содержит только одну запись (или вы заботитесь только об одной из них), и вы пытаетесь перебрать поля этой записи, тогда передайте doseq
только first
:
user> (let [rs [{:id 1 :val "foo"}]]
(doseq [[k v] (first rs)]
(println v)))
foo
1
"Для каждого ключа / значения в первой записи набора результатов выведите значение."