gpt4 book ai didi

clojure - 在 ns 定义中使用引号括起 require

转载 作者:行者123 更新时间:2023-12-02 17:47:17 24 4
gpt4 key购买 nike

当使用 require 时,我需要在左括号前使用引号,但是当我将 ns 与 :require 一起使用时,我可以不必使用引号。这是为什么?

(ns foo)
(ns user)
(require '[foo :as f]) ;; quote
(ns bar (:require [foo :refer :all])) ;; no quote

我知道引号不评估括号前面的表达式,但不完全确定为什么括号前面需要引号,因为它们不是表达式,所以不应该评估任何内容。

最佳答案

您可以require未绑定(bind)在命名空间中的符号 - 向量之前的'(或者在示例中仅使用')例如 (require 'clojure.string) (您不使用任何选项)可防止因使用未绑定(bind)的符号而导致的错误。

ns 是一个宏,它使用其主体的 :require 部分来构建对 require 的调用。宏可以决定哪个输入被评估还是保留为文字输入,因此您不能将 'ns 宏一起使用。

关于clojure - 在 ns 定义中使用引号括起 require,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34459712/

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