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.string
和 str
并且值将是绑定到这些符号的 var 包含的任何内容(或错误,如果没有绑定)。
这是一个演示差异的示例。假设您有以下两个 def
s.
(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 的文档。
假设您在 clojure 中有以下代码行。您需要报价做什么?
(require '[clojure.string :as str])
引用阻止评估。默认情况下,所有表达式都在 Clojure 中求值。在表达式前使用引号可防止计算。 Clojure 中的大多数表达式都是自求值的(它们对自己求值)。两个主要的例外是符号和列表。 编辑: 请参阅下面@amalloy 的评论和回复。
在这种情况下,引号创建了一个文字向量,其第一个元素是符号 clojure.string
,第二个元素是关键字 :as
,第三个元素是符号 str
.
如果没有引号,(require [clojure.string :as str])
将尝试计算符号 clojure.string
和 str
并且值将是绑定到这些符号的 var 包含的任何内容(或错误,如果没有绑定)。
这是一个演示差异的示例。假设您有以下两个 def
s.
(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 的文档。