我想创建一个可以读取文件的Clojure宏,当文件读取成功时应该关闭流。Clojure宏读取文件
(import '(java.io FileReader File))
(defmacro read([x y]
`(let ~x
(try ~y
(. x close)
(catch Exception e# e#)))))
这样调用,
(read [stream (java.io.FileReader (java.io.File "somefile.txt"))] (. stream read)))
导致此错误
java.lang.Exception: No such var: user/x (NO_SOURCE_FILE:8)
没有人有任何建议,谢谢。
你能提供更多关于你所得到的错误信息的信息吗?它是运行时错误还是编译时间? – 2012-01-06 12:08:24
@PieterBreed java.lang.Exception:没有这样的var:user/x(NO_SOURCE_FILE:8) – Silversnail 2012-01-06 13:37:20
在宏的第4行,“x”不是没有引号的。这仍然有很多错误... – 2012-01-06 14:20:10