【发布时间】:2023-03-04 02:39:02
【问题描述】:
我想创建一个可以读取文件的 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)
大家有什么建议吗,谢谢。
【问题讨论】:
-
您能否提供有关您收到的错误消息的更多信息?是运行时错误还是编译时错误?
-
@PieterBreed java.lang.Exception: 没有这样的 var: user/x (NO_SOURCE_FILE:8)
-
在您的宏的第 4 行,“x”没有被引用。这个还是有很多问题的……
-
是的,如果我引用 "~x",则会引发此异常