{:doc "docstring"} 最佳答案 用 ^ -6ren">
gpt4 book ai didi

clojure - 如何解析来自 Clojure 命名空间形式的元数据?

转载 作者:行者123 更新时间:2023-12-02 04:41:46 25 4
gpt4 key购买 nike

如果我有命名空间形式,如何从中提取元数据映射?例如:

(some-function '(ns ^{:doc "docstring"})) => {:doc "docstring"} 

最佳答案

^ 引入的阅读器元数据附加到下一个要读入的表单。

您的示例中引用的形式作为 Clojure 代码是错误的(也就是说,甚至没有特别考虑它是 ns 形式),因为元数据映射本身没有任何附加内容。固定版本可能是 (ns ^{:doc "docstring"} foo)。这里 foo 成为 ns 的(强制性)“名称”参数。

现在您可以使用 secondns 表单中简单地提取符号 foo 并读取其元数据映射:

(-> '(ns ^{...} foo) second meta)

请注意,命名空间的文档字符串可以以 ns 的额外参数的形式提供:

(ns foo
"foo's docstring"
...)

此外,可以提供额外的“属性映射”作为额外参数(如果以这种形式给出,则在文档字符串之后,否则紧跟在名称符号之后)。此属性映射将与名称符号的元数据合并,当然可能包含键 :doc

所以如果你想获得“文档字符串,如果有的话”,你需要查看名称符号上的元数据,紧跟在它后面的形式(如果有的话;检查它是字符串还是映射)和可能还有一种形式(如果将文档字符串作为 ns 的第二个参数;检查它是否是 map )。

关于clojure - 如何解析来自 Clojure 命名空间形式的元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20698628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com