gpt4 book ai didi

clojure - 如何在不重置repl的情况下重新加载aot编译的类?

转载 作者:行者123 更新时间:2023-12-03 00:21:43 24 4
gpt4 key购买 nike

我使用gen-class定义了一个java类,每次启动repl时它都会被编译。但是,如果我想对类进行更改,我发现我必须重新启动并重新编译该类。有没有办法在不关闭 repl 的情况下执行此操作?

一个例子

我正在研究这个https://github.com/zcaudate/hara/blob/master/src/hara/ova/impl.clj

项目中有一行。 clj

:aot [hara.ova.impl]

假设文件已经加载,我可以这样做:

(import hara.ova.Ova)
(def a (Ova.))

我想向类中添加另一个方法 bar,我只想在 hara.ova.impl 命名空间中定义 -bar ,调用compile-gen-class函数来重新加载类,然后执行这无需重新加载 repl:

(import hara.ova.Ova)
(def a (Ova.))
(.bar a)

目前,C-c C-k 不允许这样做。

最佳答案

您需要在命名空间上调用compile函数。


(ns测试)
(gen-class:名称 test.Cls)
(评论(编译'测试))

对compile的调用需要被注释掉,这样它就不会递归地调用自身。我经常将它们留在我的开发文件中,以便通过评估编译表达式来快速重新编译定义。

关于clojure - 如何在不重置repl的情况下重新加载aot编译的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com