Clojure中的可变序列

4

我在Clojure中有一个列表,并且(由于底层Java库)必须修改列表(使用迭代器的remove方法)。有没有比编写(map fn seq)的破坏性等效更优雅的方法来实现这个效果?


你在使用这些列表做什么?它们必须是原生Java列表吗?它们的变异频率有多高? - Brian Carper
1个回答

4

Clojure列表是不可变的,因此如果您需要可变列表,始终可以使用Java提供的列表。

例如:

user=> (import java.util.LinkedList)                  
java.util.LinkedList
user=> (def a (list 3 6 1 3))           
#'user/a
user=> (def b (java.util.LinkedList. a))
#'user/b
user=> b
#<LinkedList [3, 6, 1, 3]>
user=> (.remove b 6)
true
user=> b
#<LinkedList [3, 1, 3]>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接