我试图退出REPL。如何退出REPL
我用(. System exit 0)
或(System/exit 0)
,但会导致一个错误:
Exception in thread "Thread-3" java.lang.RuntimeException: java.lang.IndexOutOfBoundsException
有另一种方式来退出REPL?我如何解决这个错误?
我试图退出REPL。如何退出REPL
我用(. System exit 0)
或(System/exit 0)
,但会导致一个错误:
Exception in thread "Thread-3" java.lang.RuntimeException: java.lang.IndexOutOfBoundsException
有另一种方式来退出REPL?我如何解决这个错误?
您可以发送'文件结束'字符。
您可以按ctrl-d(* nix)或ctrl-z(Windows)退出REPL。
感谢您的回应 但我需要程序自动完成, 我的“archive.clj”有代码,并在最后(。系统退出0) – patz 2011-02-14 03:13:12
@patz你为什么在REPL模式下运行自动程序? – 2012-04-19 16:29:54
否;在repl中键入ctrl-d也会关闭你运行telnet的终端。 – 2014-01-23 04:58:21
退出REPL: 如果你正在运行在命令行的REPL然后(肖恩提到),CTRL-d
如果你从煤泥然后按Alt-X煤泥戒烟口齿不清应该运行它做到这一点。 如果你从eclipse运行它然后我不知道有一个干净的方式退出使用小红色按钮。
看起来你在代码中有不同的问题。
退出REPL 的方法是:(System/exit 0)
替代语法(. System exit 0)
也适用。
您可以从一个干净的REPL测试这个开始: java -cp clojure.jar clojure.main -r
你似乎表明在一些编索引的查找错误之前,你的代码获取到预期的出口点,显然是在不同的线程例外。
(系统/出口0)的问题是它杀死了整个JVM。真正的问题是如何以编程方式退出当前的repl,并返回到启动该repl的任何函数。
这是一个方便的黑客:
(clojure.main/repl
; Exit the repl whenever the user enters "exit" at the prompt.
:read (fn [request-prompt request-exit]
(let [form (clojure.main/repl-read request-prompt request-exit)]
(if (= 'exit form) request-exit form))))
clojure.main/REPL重复调用一个读者,在默认情况下REPL读取,拿到一次一个形式。读者的一个论据是一个特殊的哨兵对象,读者在没有更多的表格可以阅读时应该返回。默认阅读器repl-read仅在EOF上返回标记值。在repl-read提示下,您无法访问标记对象,因此无法将其返回以告知评估者您已完成输入表单。通过安装自己的阅读器,您可以检查特定的表单(例如符号出口),并在读取该表单时返回标记对象,从而向评估者指示您准备好退出repl,而不会实际上进行查杀整个虚拟机。今天
我找到了答案,这正是我需要的
(import ('java.lang.management ManagementFactory)
(use 'clojure.contrib.shell)
(defn process-pid [] (let [m-name (.getName (ManagementFactory/getRuntimeMXBean))] (first (.split m-name "@"))))
(defn exit (sh "kill" (process-pid))
在Windows(在Windows 7 64位系统测试),使用标准的命令shell(CMD.EXE),按Ctrl-Z(后跟回车键)字符看起来是文件结束指示符,它将我从REPL中删除回命令提示符。我怀疑这也将在Windows PowerShell中等效工作,请熟悉它的人请测试并确认...
还请注意,这是股票的Clojure REPL - 如果你正在运行的Datomic外壳(这似乎是一个Java的BeanShell的实例),进入“退出();” ......
HTH 。
您可以使用下列组合键退出在Emacs苹果酒REPL:C-c C-q
如果您安装了“雷音”,那么它的exit
或quit
这样的:
$ lein repl
...
user=>exit
Bye for now!
我想补充的更具体的问题:有什么办法杀死代码的repl,而不是外部命令.. – Nevena 2011-02-13 13:15:44