gpt4 book ai didi

clojure - `def` vs `declare` 用于前向声明

转载 作者:行者123 更新时间:2023-12-03 13:29:27 28 4
gpt4 key购买 nike

Clojure,有一个 declare允许您前向声明函数或变量的宏。它的功能似乎与 def 完全相同: 两个(declare x)(def x)创建 #<Unbound Unbound: #'user/x>
什么时候应该(declare x)代替(def x) ?

最佳答案

两个declaredef确实要创建一个未绑定(bind)的 var,但使用 declare 有 3 个优点:

  • 您可以在一个语句中创建多个变量,例如(declare x y z)
  • 变量标记有附加元数据 {:declared true}
  • 使用 declare 这个词可以说是更清晰和惯用

  • (source declare) :
    (defmacro declare
    "defs the supplied var names with no bindings, useful for making forward declarations."
    {:added "1.0"}
    [& names] `(do ~@(map #(list 'def (vary-meta % assoc :declared true)) names)))

    关于clojure - `def` vs `declare` 用于前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855736/

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