2011-11-29 68 views
8

(in-ns 'dbx)写入文件并加载它不会改变repl的默认名称空间(使用cygwin/console)。命名空间仍然是user=>,而不是dbx=>如何在用户定义的命名空间中启动REPL?

vikrant[28] clj 
Clojure 1.3.0 
user=> (load-file "try1.clj") 
#(Namespace dbx) 
user=> 

如何在脚本文件中定义的名称空间中启动REPL?

+1

(NS DBX) (clojure.main/REPL) (以纳秒 'DBX) (clojure.core /使用' clojure.core) – vikbehal

+3

只是一个快速评论格式化。只需复制/粘贴cygwin控制台中的文本,而不是简单地对其进行屏幕截图,就会更简洁,更容易。 –

回答

1
java -cp .;clojure-1.3.0.jar; clojure.main -e \ 
"(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)" 
+0

@Adrian Mouat,谢谢你取消你。 – BLUEPIXY

6

如果使用Leiningen建立你的项目,然后添加到您的项目的project.clj文件:

(defproject test "1.0.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :dependencies [[org.clojure/clojure "1.2.1"]] 
    :main test.core) 

在你src/test/core.clj文件,添加它来创建一个test.core命名空间:

(ns test.core) 

(defn -main [& args]) 

接下来,与莱宁宁建立您的项目与lein compile。然后输入lein repl以在您的名称空间中调用REPL。在REPL提示看起来像:

test.core=> 
+1

我推荐使用Carlos的[更新的答案](http://stackoverflow.com/a/24364816/109618)。 –

0

(ns dbx) (clojure.main/repl) (in-ns 'dbx) (clojure.core/use 'clojure.core)

0

有一个更好的方法在最近Clojure的版本中做到这一点:

java -cp myapp.jar clojure.main -m myapp.core

1

除了Carlos' answer暗示:repl-options {:init-ns foo.bar},我也有过成功与添加:dev {:main user}我profile.clj。

为了让更多的上下文:

;; /foo/profile.clj 
... 
:main foo.core 
:dev {:main user 
     :source-paths ["dev"]}` 
... 

;; /foo/dev/user.clj 
(ns user 
    (:require 
    [clojure.pprint :refer (pprint)] 
    [clojure.repl :refer :all] 
    [clojure.string :as str] 
    [clojure.test :refer [run-tests run-all-tests]] 
    [clojure.tools.namespace.repl :refer [refresh refresh-all]]))