【问题标题】:Mutable seqs in clojureclojure 中的可变序列
【发布时间】:2009-07-25 08:44:08
【问题描述】:

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

【问题讨论】:

  • 您将这些列表用于什么目的?它们必须是本机 Java 列表吗?它们多久变异一次?

标签: java clojure


【解决方案1】:

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]>

【讨论】:

    猜你喜欢
    • 2011-03-09
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2011-10-07
    相关资源
    最近更新 更多