2012-07-16 35 views
2

我已经与项目创建Leiningen和下面的代码Core.clj文件中的所有功能:Clojure的REPL无法解析符号

(ns hyperstring.core 
(:use [clojure.pprint :only (pprint)]) 
(:require [clojure.java.io :as io] 
      [clojure.string :as str]) 
(:import [java.io File])) 

;;read file line by line 
(defn read-line-by-line [filepath] 
(with-open [rdr (reader filepath)] 
    (doseq [line (line-seq rdr)] 
    (println line)))) 

;;write to a new file 
(defn write-file [filepath] 
(with-open [wrtr (writer filepath)] 
    (.write wrtr "Line to be written"))) 

等功能

我进入REPL与clojure- jack-in,并用(ns hyperstring.core)切换到我的名字空间。接下来,我试图启动任何功能文件,并得到REPL asnswer:

java.lang.Exception: Unable to resolve symbol: read-line-by-line in this context 

我怎么错过?也许有些选项或代价?

的Clojure-1.4.0,Leiningen-2.0,自吹-1.4.4

回答

5

(ns some.thing)并不仅仅切换到一个命名空间;它创建它。

你应该先加载功能使用(例如):

(require 'hyperstring.core)

或煤泥,C-c C-k(煤泥编译并加载文件),C-c C-p(煤泥REPL-SET-包),而在core.clj。

+0

是的,这解决了我的问题。谢谢。 – Sigrlami 2012-07-16 18:14:56

+0

要切换到加载的名称空间,请使用'in-ns',而不是'ns'。 – kotarak 2012-07-17 05:31:40