在clojure中,vector前面的quote是什么意思?



假设您在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中如何解析符号的详细信息,请参阅clojure.org的求值部分。

您可能还会发现关于quote的文档很有帮助,关于Clojure语法的部分也是如此。

相关内容

  • 没有找到相关文章

最新更新