递归删除并替换clojure中的项目

问题描述 投票:0回答:2

我的问题是从列表中删除一个项目并将其替换为新值。例如,如果我有列表'(F J (N R D A)),我想用一个全新的列表替换它,如'(F J (M G E Q F))。所以我将删除最里面的列表并用新的列表替换它。有什么建议?

replace clojure
2个回答
0
投票

您可以使用clojure.walk递归替换数据结构的元素:

(def my-list '(F J (N R D A)))
(walk/postwalk
  #(if (= '(N R D A) %)
     '(M G E Q F)
     %)
  my-list)
=> (F J (M G E Q F))

0
投票

怎么样:

(replace {'(N R D A) '(M G E Q F)} '(F J (N R D A))) => (F J (M G E Q F))
© www.soinside.com 2019 - 2024. All rights reserved.