假设您在 clojure 中有以下代码行。您需要报价做什么?
(require '[clojure.string :as str])
Run Code Online (Sandbox Code Playgroud)
报价可以防止评估。默认情况下,所有表达式都在 Clojure 中计算。在表达式前面使用引号会阻止计算。 Clojure 中的大多数表达式都是自求值(它们对自身求值)。两个主要的例外是符号和列表。 编辑:请参阅下面@amalloy 的评论和回复。
在本例中,引用创建一个文字向量,其第一个元素是符号clojure.string,第二个元素是关键字:as,第三个元素是符号str。
如果没有引号,(require [clojure.string :as str]), 将尝试计算符号clojure.string和str,并且该值将是绑定到这些符号的 var 包含的任何值(如果没有任何绑定,则为错误)。
这是一个展示差异的示例。假设您有以下两个def。
(def a 16)
(def b 12)
Run Code Online (Sandbox Code Playgroud)
现在,'[a 14 b]将计算向量[a 14 b]。但是,[a 14 b]会评估为[16 14 12].
有关如何在 Clojure 中解析符号的详细信息,请参阅评估部分。clojure.org
您可能还会发现quote文档以及 Clojure语法部分很有帮助。
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |