有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Clojure中的java链接向量元素

我试图在Clojure中读取宏中的文件

我用这行代码启动宏:

(def result (rd [s (FileReader. (File. "myFile.txt"))] (.read s)))

其中“rd”是我的宏的名称

我的宏的原型如下所示:

(defmacro rd
  ([] nil)
  ([arg] arg)
  ([[variable val] expr]
  )
)

问题是我可以“执行”文件读取器,但当我试图“执行”expr(.read s)时,它不工作,因为s未知

所以我想把向量的元素和已知的向量联系起来,所以我想用val来表示变量

我不确定我在做什么,所以如果你看到其他的方式,我会去做

提前谢谢各位


共 (1) 个答案

  1. # 1 楼答案

    如前所述,如果需要在运行时读取文件,则需要引入var。。大概是这样的:

    (defmacro rd [[variable val] expr]
      `(let [~variable ~val]
         ~expr))
    

    然后您的宏调用将扩展为:

    (let [s (FileReader. (File. "myFile.txt"))] (.read s))