我一直在尝试编写一个从集合或向量中获取跨度的 Clojure 函数。例如,我想通过分两步获取第二个元素到第五个元素来操作诸如 (:a :b :c :d :e :f :g :h) 之类的集合。因此,输出(:b:d)。
问问题
53 次
2 回答
0
如果您现在还没有弄清楚,这里有一个功能可以满足您的需求。
(defn take-span
[start end step coll]
(take-nth step (take (- end start) (drop start coll))))
(take-span 1 4 2 '(:a :b :c :d :e :f :g :h))
希望这可以帮助!
于 2013-11-12T18:52:03.003 回答
0
看看 (take-nth n coll) 函数
(take-nth n coll)
Returns a lazy seq of every nth item in coll.
user=> (take-nth 2 (range 10))
(0 2 4 6 8)
这与您的问题不完全匹配,但它是一个很好的灵感起点。
当然,您可以通过以下方式查看源代码:
(source take-nth)
于 2013-11-11T22:54:36.680 回答