(some_func :foo) 是否可以? 最佳答案 通过在类路径顶部的data_readers.clj中-6ren">
gpt4 book ai didi

clojure - 在Clojure中定义我自己的阅读器宏

转载 作者:行者123 更新时间:2023-12-04 07:02:37 26 4
gpt4 key购买 nike

我想在clojure中定义自己的阅读器宏:

(read-string "ßfoo")
=> (some_func :foo)

是否可以?

最佳答案

通过在类路径顶部的data_readers.clj中放置阅读器映射,可以创建带标记的文字。

它必须在类路径顶部的data_readers.clj中(通常是src目录)。

{ß reader-demo.core/read-fn}

这进入reader-demo.core
(defn some-func
[arg]
(str "some-func invoked with " arg))

(defn read-fn
[arg]
(-> arg
keyword
some-func))

调用中
#ß foo

将返回
"some-func invoked with :foo"

此处介绍了此技术: The reader: Tagged literals

请注意,在实践中,您应该对标记的文字进行命名空间,因为所有非命名空间都保留给Clojure本身。

关于clojure - 在Clojure中定义我自己的阅读器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677055/

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