在Clojure REPL中管理和查找变量
我在看图书馆。头版的例子是:在Clojure REPL中管理和查找变量,clojure,Clojure,我在看图书馆。头版的例子是: (require '[juxt.dirwatch :refer (watch-dir)]) (watch-dir println (clojure.java.io/file "/tmp")) 那很好。假设上述内容在REPL中执行: user=> (watch-dir println (clojure.java.io/file "/tmp")) #<Agent@16824c93: #<LinuxWatchService sun.nio.fs.Lin
(require '[juxt.dirwatch :refer (watch-dir)])
(watch-dir println (clojure.java.io/file "/tmp"))
那很好。假设上述内容在REPL中执行:
user=> (watch-dir println (clojure.java.io/file "/tmp"))
#<Agent@16824c93: #<LinuxWatchService sun.nio.fs.LinuxWatchService@17ece9ac>>
所以一切都很好
我知道我可以使用前面的表达式引用*1、*2和*3来引用代理。但是,如果不重新启动REPL本身,我不知道如何:
取消绑定这样创建的隐式变量-即如何完全删除绑定,以便代理得到GCed并停止工作
在我没有绑定它的情况下(如上面所述),如果我丢失了它,请访问它。如果我没有弄错的话,在REPL中只有最后三个结果可用*3是,但是*4和更多的结果都不是,至少每个
有什么建议吗?你看过代码了吗?watch dir的文档有这样一个特性:这个函数返回的watcher是一个 应该由密切观察者关闭 查看watch dir使用的代码,它将潜在的阻塞操作分派给代理。立即返回代理。。换句话说,为了解决第一个问题,没有创建隐式var。如果您想摆脱代理,您应该将返回的代理绑定到某个var,然后调用closewatcher 要解决第二个问题,请看一下规范。具体来说,您可以调用,这将关闭线程池,并可能杀死其他代理
{:file #<File /tmp/1>, :count 1, :action :modify}