【发布时间】:2015-08-12 11:17:38
【问题描述】:
我正在尝试制作一个函数,该函数将获取包含字母的向量并将其转换为具有字母对的向量
["a" "b" "c"] to ["ab" "bc"]
我发现这个函数可以满足我的需要,但它似乎并没有改变我作为参数输入的向量,而是为每次迭代创建一个新向量。
(defn test [param] (for [i (range (count param))] (assoc param i
(clojure.string/join [(get param i) (get param (inc i))]))))
有人知道如何永久更改向量的元素吗?
【问题讨论】:
-
Clojure 数据结构、向量、列表等是不可变的。像
assoc这样的函数返回一个新的数据结构,很像旧的数据结构。在底层,它们(在结构上)共享大部分未更改的内容,因此性能损失通常是可以接受的。 -
好的,有没有办法创建一个只包含字母组合的新向量并使函数返回该值作为结果?
-
顺便说一句。 clojure 中没有“for 循环”之类的东西,
for是一个列表理解。