【问题标题】:Clojure #= reader macroClojure #= 阅读器宏
【发布时间】:2011-09-19 15:44:00
【问题描述】:

我刚刚从 Stackoverflow 上的 post 中“发现”了 #= 阅读器宏 它解决了一个问题。这个阅读器宏成为 语言的官方(记录)部分?不推荐使用或 行为改变了吗?

#= 阅读器宏导致 Lisp 阅读器评估以下 s 表达式(在宏扩展之前)。

【问题讨论】:

    标签: macros clojure


    【解决方案1】:

    当使用 *print-dup* true 打印某些内容时,核心语言会使用它,所以我敢打赌它会保留下来。不知道为什么没有记录。

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

    【讨论】:

    • 谢谢。我也想知道为什么它没有记录在案。在宏展开之前评估子表达式在宏中会很有用。
    【解决方案2】:

    它没有被记录,因为它可能会消失/被其他东西取代。我不建议在你的程序中使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多