(ns ... ) 形式是首选,因为您的代码将更容易阅读。所有命名空间声明都将收集在文件的顶部。您会看到编译器在 Java 等语言中强制执行此操作。此外,包含宏 ns 消除了您引用符号的需要。使用、导入、引用等也可以这样说。
我认为C-x C-e
粘液快捷方式会将这段代码发送到连接的 swank 服务器,并对其进行评估。例如表格:
(ns my.test
(:require [clojure.contrib.logging :as log])
(:import [java.io File]))
将创建一个名为 my.test 的新命名空间,其中包括 contrib 日志记录和 java.io 文件。它不会改变 repl 的命名空间。要做到这一点,请C-c M-p
从您正在编辑的文件中按下,系统将提示您切换到该文件的名称空间(除非您已经在该名称空间中)。按回车键选择。C-c C-z
应该切换到repl。user=>
现在,您应该看到,而不是提示,my.test=>
表明您在该名称空间中。
我设置的工作流程是在保存时编译整个文件,使用:
(defun ed/clojure-compile-on-save (&optional args)
"Compile with slime on save"
(interactive)
(if (and (eq major-mode 'clojure-mode)
(slime-connected-p))
(slime-compile-and-load-file)))
(add-hook 'after-save-hook 'ed/clojure-compile-on-save)
这样,当我保存文件时,它会被 swank 服务器编译和加载,并且我使用 repl 在我正在处理的命名空间中进行实验。