Clojure REPL 无法解析所有函数的符号

3

我有一个使用Leiningen创建的项目,在Core.clj文件中有以下代码:

(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")))

和其他功能

我使用 clojure-jack-in 进入 REPL,并使用 (ns hyperstring.core) 切换到我的命名空间。接下来,我尝试启动文件中的任何函数并获取 REPL 的答案:

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

我错过了什么?也许是一些选项或依赖关系吗?

clojure-1.4.0,Leiningen-2.0,swank-1.4.4

1个回答

6

(ns some.thing) 不仅仅只是切换到一个命名空间,它还会创建该命名空间。

您应该先使用以下命令加载函数:

(require 'hyperstring.core)

或者从Slime中执行 C-c C-k (slime-compile-and-load-file),C-c C-p (slime-repl-set-package) 命令来加载 core.clj 文件。


使用in-ns而不是ns来切换到已加载的命名空间。 - kotarak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接