我有此代码:
(defn a[]
1
)
(defn test []
(spit "test.txt" a))
运行test时,test.txt仅具有对象名称:
test$a@603494de
但我希望它的值为1
或者如果我使用with-open:
(defn test1 []
(with-open [w (clojure.java.io/writer "test.txt")]
(.write w a)))
得到错误:IllegalArgumentException找不到匹配的方法:为类java.io.BufferedWriter编写
但是如果我写:
(.write w "a")
没有错误
如何解决?谢谢!
答案 0 :(得分:2)
正在发生两件事:
首先,a
是一个函数。您需要调用它并获取值,或者改用def
(因为其常量):
(def a 1) ;; no need to call a
(defn a[] 1) ;; need to call a: (a)
第二,(假设您保留defn
并且a
仍然是一个函数),要创建一个字符串作为spit
的参数,您需要使用str
:< / p>
(spit "test.txt" (str (a))) ;; note a is called