我曾用克隆技术长达一个月,因此,我可能没有资格任命最偏爱的方法。
但是,你的实施工作很短,而且到了一点(认为这还重复了所建功能>,如前所述,。
实施工作已经是相当可靠的数据结构,因为它使用,即操作,与所有标准数据结构合作:
(split 2 [1 2 3 4 5 6])
=> ((1 2) (2 3) (3 4) (4 5) (5 6))
(split 2 #{1 2 3 4 5 6})
=> ((1 2) (2 3) (3 4) (4 5) (5 6))
(split 2 {1 :a 2 :b 3 :c 4 :d})
=> (([1 :a] [2 :b]) ([2 :b] [3 :c]) ([3 :c] [4 :d]))
(split 2 "abcd")
=> ((a ) ( c) (c d))
使用平原再入侵的主要限制是,你受 st体大小的限制:
(split 2 (range 10000))
=> java.lang.StackOverflowError
因此,如果你期望投入量大大高于1k,那么它就更能使用回旋/回声,而后者没有使用 st子:
(defn split-loop [n coll]
(loop [elms coll res [] ]
(if (< (count elms) n)
res
(recur (next elms) (conj res (take n elms))))))