《clojure》符号中的星星

《clojure》符号中的星星,clojure,Clojure,星号在定义符号(如函数、绑定等)时是否有特定含义?当我定义以下内容时,它是否只是一个普通的绑定名称: (def *clojure* "CLOJURE") 当我def这个时,我在REPL中得到: 警告:*clojure*未声明为动态,因此不可动态重新绑定,但其名称表明并非如此。请注明^:dynamic*clojure*或更改名称 我在哪里可以阅读更多关于特殊字符和**之类的内容 按照惯例,带有“耳罩”的变量(即用*s括起来)是动态变量,可以使用和相关函数(例如 (def ^:dynamic *d

星号在定义符号(如函数、绑定等)时是否有特定含义?当我定义以下内容时,它是否只是一个普通的绑定名称:

(def *clojure* "CLOJURE")
当我
def
这个时,我在REPL中得到:

警告:*clojure*未声明为动态,因此不可动态重新绑定,但其名称表明并非如此。请注明^:dynamic*clojure*或更改名称


我在哪里可以阅读更多关于特殊字符和**之类的内容

按照惯例,带有“耳罩”的变量(即用*s括起来)是动态变量,可以使用和相关函数(例如

(def ^:dynamic *dyn*)

(binding [*dyn* "Hello world!"]
  (println *dyn*))
如果以这种方式命名变量而不使其成为动态变量,则会看到警告。

检查此项。耳罩只是@Lee已经提到的一种习俗