我有两个在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/