首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure导入与:导入

Clojure导入与:导入
EN

Stack Overflow用户
提问于 2011-07-13 09:32:07
回答 2查看 884关注 0票数 5

阅读用于导入的clojure API,我发现: ns宏中的import优先于import,但是当我使用swank/slime/emacs编码时,我不能c-x c-e the (ns ..)s-expression将dep放入repl中,但使用(import ...)我可以的。

原因是什么:导入比导入更好,有没有快速的方法从一个(ns ...)s-expr从我的.clj文件到repl?(同样的问题可以概括为:使用和:参考..谢谢)

EN

回答 2

Stack Overflow用户

发布于 2011-07-13 15:54:54

我不确定为什么c-x、c-e不能工作,但只要名称空间已经存在,ns表达式上的C-c、C-c就可以正常工作。

票数 2
EN

Stack Overflow用户

发布于 2011-07-20 19:42:53

(ns...)表单是首选,因为您的代码将更容易阅读。所有的名称空间声明都将被收集在文件的顶部。在Java等语言中,您可以看到这是由编译器强制执行的。此外,包含宏ns使您不再需要引用符号。use、import、refer等也是如此。

我认为C-x C-e slime快捷方式会将这段代码发送到连接的swank服务器,并对其进行评估。例如,表单:

代码语言:javascript
复制
(ns my.test
   (:require [clojure.contrib.logging :as log])
   (:import [java.io File]))

将创建一个名为my.test的新名称空间,其中包括contrib日志记录和java.io文件。它不会更改repl的名称空间。为此,在您正在编辑的文件中按C-c M-p,系统将提示您输入要切换到的文件的名称空间的名称(除非您已经在该名称空间中)。按enter键选择。C-c C-z应该切换到repl。现在,您应该看到的不是user=>提示符,而是my.test=>,表示您位于该名称空间中。

我设置的工作流程是在保存时编译整个文件,使用:

代码语言:javascript
复制
(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在我正在处理的名称空间中进行实验。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6673158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档