2011-11-29 6 views
8

Viết (in-ns 'dbx) vào một tệp và tải nó không thay đổi không gian tên mặc định của repl (sử dụng cygwin/console). Không gian tên vẫn là user=>, không phải là dbx=>.Làm cách nào để tôi bắt đầu REPL trong không gian tên do người dùng xác định?

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

Làm cách nào chúng tôi có thể bắt đầu REPL trong không gian tên được xác định trong tệp tập lệnh?

+1

(ns dbx) (clojure.main/repl) (trong ns 'dbx (clojure.core/sử dụng)' clojure.core) – vikbehal

+3

Chỉ cần một nhận xét nhanh về định dạng. Nó nên được sạch hơn và dễ dàng hơn để chỉ cần sao chép/dán văn bản trong giao diện điều khiển Cygwin của bạn hơn là chụp ảnh màn hình của nó. –

Trả lời

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

@Adri Mouat, Cảm ơn bạn đã hoàn tác Bạn. – BLUEPIXY

6

Nếu bạn đang sử dụng Leiningen để xây dựng dự án của bạn, sau đó thêm video này vào tập tin project.clj của dự án của bạn:

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

Trong file src/test/core.clj của bạn, thêm này để tạo ra một không gian tên test.core:

(ns test.core) 

(defn -main [& args]) 

Tiếp theo, xây dựng dự án của bạn với Leiningen với lein compile. Sau đó, nhập lein repl để gọi REPL trong không gian tên của bạn. Dấu nhắc REPL sẽ trông giống như:

test.core=> 
+1

Tôi khuyên bạn nên sử dụng [câu trả lời cập nhật hơn của Carlos] của Carlos (http://stackoverflow.com/a/24364816/109618). –

0

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

20

Ngày nay là :repl-options {:init-ns foo.bar}.

Xem https://github.com/technomancy/leiningen/blob/master/sample.project.clj

+0

Không hoạt động cho tôi trong năm 2017 –

+0

@LincolnBergeson nó vẫn hoạt động cho tôi bằng cách sử dụng phiên bản mới nhất - phiên bản 2.7.1, với một dự án ứng dụng hoàn toàn mới được tạo bằng ứng dụng mới 'lein '. –

0

Có một cách tốt hơn để làm điều này trong các phiên bản gần đây Clojure:

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

1

Ngoài Carlos' answer gợi ý :repl-options {:init-ns foo.bar}, tôi cũng đã thành công với việc thêm :dev {:main user} để tôi profile.clj.

Để cung cấp cho bối cảnh nhiều hơn:

;; /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]]))