gpt4 book ai didi

clojure - 为什么在 "use"(在 clojure 中)中的向量周围使用单引号?

转载 作者:行者123 更新时间:2023-12-03 00:26:20 30 4
gpt4 key购买 nike

当我使用一些长函数名时,我使用了use形式,如下所示:

(use '[clojure.string :as str])

但我不知道为什么要在向量中添加一个单引号 ',所以我试图弄清楚它的类型:

(type '[clojure.string :as str])
;=> clojure.lang.PersistentVector

简化示例:

(type ["hello"])
;=> clojure.lang.PersistentVector

(type '["hello"])
;=> clojure.lang.PersistentVector

似乎单引号没有改变任何东西,任何人都可以解释它在use形式中的用法吗?

最佳答案

目的是引用符号。这样它们将被视为符号,并且 use 可以将这些符号作为命名空间来加载并拉入当前。您希望避免对符号进行默认处理,即将其解析为 Var 的名称并使用该 Var 的值。您也可以这样做

(use ['clojure.string :as 'str])

但这涉及一些不必要的输入;引用整个向量可以让你不太可能忘记任何事情。特别是当您使用 :only:refer 或类似关键字参数执行任何操作时。

旁白:ns 不需要这个,因为作为一个宏,它可以控制其参数的计算 - 像 requireuse 这样的函数有他们的所有参数在运行之前都会被读取和评估。这就是为什么 ns 通常比这些函数更受青睐的部分原因。

关于clojure - 为什么在 "use"(在 clojure 中)中的向量周围使用单引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34118554/

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