我想知道是否有一种按索引解构向量的方式。基本上,这是一种简写方式,可以避免以下操作:
(defn f [v]
(let [x (nth v 4)
y (nth v 5)]
(println x y)))
这是我的基本问题:
user=> (defn f [{x 4 y 5}] (println x y))
#'user/f
user=> (f [0 1 2 3 4 5 6])
4 5
nil
user=> (f (apply vector (range 10)))
4 5
nil
user=> (f (range 10))
5 nil
nil
user=>
(range 10)
是一个惰性序列,因此不是可关联的,因此这样做不起作用。或者说,它的工作方式不同。有关更多详细信息,请参见我的答案评论。 - Michał Marczyk