clojure 中向量前面的引号是什么意思?

What does a quote mean in front of a vector in clojure?

假设您在 clojure 中有以下代码行。您需要报价做什么?

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

引用阻止评估。默认情况下,所有表达式都在 Clojure 中求值。在表达式前使用引号可防止计算。 Clojure 中的大多数表达式都是自求值的(它们对自己求值)。两个主要的例外是符号和列表。 编辑: 请参阅下面@amalloy 的评论和回复。

在这种情况下,引号创建了一个文字向量,其第一个元素是符号 clojure.string,第二个元素是关键字 :as,第三个元素是符号 str .

如果没有引号,(require [clojure.string :as str]) 将尝试计算符号 clojure.stringstr 并且值将是绑定到这些符号的 var 包含的任何内容(或错误,如果没有绑定)。

这是一个演示差异的示例。假设您有以下两个 defs.

(def a 16)
(def b 12)

现在,'[a 14 b] 将计算为向量 [a 14 b]。但是,[a 14 b] 将计算为 [16 14 12]

请参阅 clojure.org 上的 Evaluation 部分,详细了解如何在 Clojure 中解析符号。

您可能还会找到 quote to be helpful, as also the section on Clojure syntax 的文档。