我有两个函数在dosync中执行IO.因此,当我做一个
(require 'my.namespace :reload)
Run Code Online (Sandbox Code Playgroud)
我明白了:
CompilerException java.lang.IllegalStateException: I/O in transaction, compiling:
Run Code Online (Sandbox Code Playgroud)
有没有办法排除重新加载这两个函数或整个命名空间?
如果你有顶级表单有副作用(如阅读或写东西),你可以保护他们不被重新加载defonce宏:
(defonce launcher (fire-the-missiles))
Run Code Online (Sandbox Code Playgroud)
这样,如果已经定义了启动器,则不会重新评估定义启动器的表单.顶级表单中有太多副作用会产生代码味道,因为当你想重新加载它们时会更加困难.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |