Skip to main content
 首页 » 操作系统 » linux系统

clojure变量、绑定和命名空间

变量、绑定和命名空间使用def或defn定义了一个对象时,这个对象会被存储在一个Clojure变量(var)中。

def创建了一个名为user/foo的变量。

(def foo 10)

-> #'user/foo

符号user/foo指向一个变量,该变量绑定了10这个值。

foo

-> 10

一个变量的初始值被称为它的根绑定(root binding)。

直接引用一个变量。特殊形式(special form)var能返回变量自身,而不是变量的值。

(var a-symbol)

你可以使用var来获取绑定到user/foo上的那个变量。

(var foo)

-> #'user/foo

var与其等价的读取器宏#',它同样会返回与符号绑定的那个变量。

#'foo

-> #'user/foo

但请务必留意,除了用来保存值以外,变量还有许多其他能力。

● 同一个变量,可以在多个命名空间中具有别名

● 变量可以有元数据。

元数据包括文档、用于优化的类型提示,还有单元测试。

● 变量可基于每个线程进行动态重绑定。

评论列表暂无评论
发表评论
微信