clojure中的可变序列

时间:2009-07-25 08:44:08

标签: java clojure

我在clojure中有一个列表,并且(由于底层的java库)必须修改列表(使用迭代器的remove方法)。是否有更优雅的方式来获得这种效果,而不是写一个破坏性的等价物(map fn seq)?

1 个答案:

答案 0 :(得分: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]>