2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!有关如何工作的更多信息,请参阅 关于 页面。

+40
Clojure
关闭

示例

user=> (set! *print-meta* true)
true
user=> (clojure.walk/postwalk identity ^:foo ())
()
user=> (clojure.walk/postwalk identity (with-meta (list 1 2 3) {:foo true}))
(1 2 3)

查看 JIRA 问题: https://clojure.atlassian.net/browse/CLJ-2568
该 JIRA 问题已存在一段时间。创建此询问问题以便它可以收集社区的点赞。如果您在乎,请点赞!

以以下笔记关闭: 在 1.12.0-alpha8 中发布

2 个回答

+1

看到真正在乎的示例将非常有帮助 - 在研究各种权衡时,缺乏更多关于您遇到此问题的信息,就难以理解使用案例。

by
以edamame为例,我在函数字面量的body中使用了postwalk。因为行号在列表/序列(cons不是列表,但存在语法引号的产物)中被丢弃,我需要实现自己的。

https://github.com/borkdude/edamame/blob/6ec811bee0d9a636e4e1eb87f9cf2aa1dd5d8518/src/edamame/impl/read_fn.cljc#L4-L24
by
我认为使用clojure.walk处理所有严重的代码都将面临元数据问题。它会丢失^:tag、位置等信息。
0
by

Alex Miller
2020年5月31日,晚上9:54

需要考虑的一个问题是,现有代码在遍历时是否会修改coll的元数据,从而因这一改动而损坏。

这是一个问题,有什么答案吗?

by
JIRA问题已更新
...