我有两个在dosync中执行IO的功能。因此,当我做一个

(require 'my.namespace :reload)

我得到:
CompilerException java.lang.IllegalStateException: I/O in transaction, compiling:

有没有办法排除这两个函数或整个命名空间的重载?

最佳答案

如果您有带有副作用(例如阅读或书写内容)的顶级表单,则可以防止使用defonce宏重新加载它们:

(defonce launcher (fire-the-missiles))

这样,如果启动器已经被定义,那么定义它的表单将不会被重新评估。在顶级表单中有太多副作用是一种代码味道,因为当您确实想重新加载它们时,会更加困难。

关于clojure - 是否可以从Repl的:reload中排除函数/ namespace ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33256603/

10-14 09:55
查看更多