Clojure #= 读取宏

14
我刚看到Stackoverflow上的一篇post,介绍了#=读取宏,这解决了我的一个问题。这个读取宏成为语言官方(有文档记录)的一部分的可能性有多大?它是否会被弃用或更改行为?
#=读取宏会导致Lisp读取器(在宏扩展之前)对以下s表达式进行求值。
2个回答

5

当使用 *print-dup* 为 true 时,核心语言会使用它来打印某些内容,因此我敢打赌它将会保留。不知道为什么它没有被记录在文档中。

user=> (binding [*print-dup* true] (prn {:foo 1 :bar 2}))
#=(clojure.lang.PersistentArrayMap/create {:foo 1, :bar 2})
nil

谢谢。我也想知道为什么没有记录下来。在宏中,在宏扩展之前评估子表达式将非常有用。 - Ralph

3

这个功能没有记录,因为它可能会被删除或者被替换成其他东西。我不建议在你的程序中使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接