Link Clojure 中的矢量元素
Link vector element in Clojure
我正在尝试在 Clojure 的宏中读取文件。
我正在用那一行启动我的宏:
(def result (rd [s (FileReader. (File. "myFile.txt"))] (.read s)))
其中 "rd" 是我的宏的名称。
我的宏原型是这样的:
(defmacro rd
([] nil)
([arg] arg)
([[variable val] expr]
)
)
问题是我可以 "execute" FileReader,但是当我尝试 "execute" expr (.read s) 时,它不起作用,因为 s 未知。
所以我正在尝试 link 我的矢量元素使 s 已知,所以我希望 "variable" 由 val 指向。
我不确定我是否在做自己想做的事情,所以如果您看到其他方式,我会尽力而为。
在此先感谢大家。
如果你需要在运行时读取文件,就像你说的,你需要引入var..像这样:
(defmacro rd [[variable val] expr]
`(let [~variable ~val]
~expr))
然后您的宏调用将扩展为:
(let [s (FileReader. (File. "myFile.txt"))] (.read s))
我正在尝试在 Clojure 的宏中读取文件。
我正在用那一行启动我的宏:
(def result (rd [s (FileReader. (File. "myFile.txt"))] (.read s)))
其中 "rd" 是我的宏的名称。
我的宏原型是这样的:
(defmacro rd
([] nil)
([arg] arg)
([[variable val] expr]
)
)
问题是我可以 "execute" FileReader,但是当我尝试 "execute" expr (.read s) 时,它不起作用,因为 s 未知。
所以我正在尝试 link 我的矢量元素使 s 已知,所以我希望 "variable" 由 val 指向。
我不确定我是否在做自己想做的事情,所以如果您看到其他方式,我会尽力而为。
在此先感谢大家。
如果你需要在运行时读取文件,就像你说的,你需要引入var..像这样:
(defmacro rd [[variable val] expr]
`(let [~variable ~val]
~expr))
然后您的宏调用将扩展为:
(let [s (FileReader. (File. "myFile.txt"))] (.read s))