Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Clojure REPL中管理和查找变量_Clojure - Fatal编程技术网

在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}