Clojure循环通过从第n个元素开始的向量而不是0

时间:2016-10-08 16:21:18

标签: clojure

我想循环一个从第n个元素开始的向量而不是0;

在Java中看起来如何:

for(int i = firstIndex; i <= lastIndex; i++) {
    newText += contents[i] + " ";
}

2 个答案:

答案 0 :(得分:5)

如果你总是处理一个向量,那么subvec是一个不错的选择。例如:

(subvec contents firstIndex)

如果您希望与一般的序列兼容,则您需要使用dropdropO(n) w.r.t.删除的元素数量,subvec始终为O(1)。如果你只丢掉一些元素,差异可以忽略不计。但是对于丢弃大量元素(即大firstIndex),subvec将是一个明显的赢家。但subvec仅适用于矢量。

答案 1 :(得分:1)

您可以使用drop函数跳过第一个n元素,然后遍历结果。例如,如果要跳过两个第一个元素:

user=> (drop 2 [1 2 3 4])
(3 4)

以下内容可能与您提供的Java表单相同:

(require '[clojure.string :as str])
(str/join " " (drop first-index contents))