【发布时间】:2013-05-03 16:53:29
【问题描述】:
我想知道是否有办法按索引解构向量。基本上,一个可以让我避免的速记:
(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)是一个惰性序列,因此不是关联的,因此这不起作用。或者更确切地说,工作方式不同。有关更多详细信息,请参阅我的答案中的 cmets。 -
所以,关于按索引解构向量的原始问题的答案是,是的,你可以做到;关于按索引解构序列的新问题的答案是你不能。
标签: clojure destructuring