【发布时间】:2021-10-30 22:45:57
【问题描述】:
假设您在 clojure 中有以下代码行。你需要什么报价?
(require '[clojure.string :as str])
【问题讨论】:
标签: clojure
假设您在 clojure 中有以下代码行。你需要什么报价?
(require '[clojure.string :as str])
【问题讨论】:
标签: clojure
引用会阻止评估。默认情况下,所有表达式都在 Clojure 中计算。在表达式前面使用引号会阻止评估。 Clojure 中的大多数表达式都是自求值的(它们对自己求值)。两个主要的例外是符号和列表。 编辑:请参阅下面@amalloy 的评论和回复。
在这种情况下,引号创建了一个文字向量,其第一个元素是符号clojure.string,第二个元素是关键字:as,第三个元素是符号str。
如果没有引号,(require [clojure.string :as str]) 将尝试评估符号 clojure.string 和 str,并且值将是绑定到这些符号的 var 包含的任何值(或者错误,如果没有绑定)。
这是一个展示差异的示例。假设您有以下两个defs。
(def a 16)
(def b 12)
现在,'[a 14 b] 将计算为向量 [a 14 b]。但是,[a 14 b] 将评估为 [16 14 12]。
请参阅 clojure.org 上的 Evaluation 部分,详细了解 Clojure 中符号是如何解析的。
【讨论】: