Clojure China

Alter-var-root 能否用于java方法

#1

alter-var-root可以用来改变一个clojure var的root binding。那同样的,alter-var-root是否可以用于一个static java方法?如果可以,该怎么使用?

#2

不能, java 的方法是个值, 不是 var, var 必须是Clojure def 定义出来的。

(def a 42)

(defn foo [x]
  (+ a x))

;;; 编译成
(defn foo [x]
  (+ (var-get #'a) x))