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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归删除并替换clojure中的项目相关的知识,希望对你有一定的参考价值。

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

答案

您可以使用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))
另一答案

怎么样:

(replace {'(N R D A) '(M G E Q F)} '(F J (N R D A))) => (F J (M G E Q F))

以上是关于递归删除并替换clojure中的项目的主要内容,如果未能解决你的问题,请参考以下文章

如果在底部导航栏中选择了其他项目,如何删除 floatingActionButton 替换片段

用另一个列表替换主活动中的列表并从视图中删除旧列表

通过 Clojure 中的集合进行递归的惯用方式

比较 C# 中的字符串片段并从集合中删除项目

替换或删除后台堆栈上现有片段的代码不起作用

RecyclerView 项目中的片段替换