为什么 lein repl find 函数找不到?
Why can't lein repl find function?
我正在使用
[ics@steamboy util]$ lein version
Leiningen 2.5.1 on Java 1.7.0_91 OpenJDK Server VM
使用 Clojure 1.6
在 lein repl
中,我曾经能够从 repl
.
中调用函数
util.core=> (load-file "src/util/core.clj")
#'util.core/-main
util.core=> (bldg-sqft-test)
并从 repl
.
中执行函数
(defn ret-val-from-sos
"Takes a value, a map key, an s-o-s, and returns first match."
[in-val map-key-1 map-key-2 s-o-s]
(doseq [x s-o-s]
(println (str (first x)))))
(defn bldg-sqft-test
[& args]
(let [bldg-cols (fetch-csv-data "bldg_sqft_cols.csv")
bldg-data (fetch-csv-data "Buildingsqft.csv")
mapped-data (xform-sos-in bldg-data bldg-cols)
my-bldg-sqft (ret-val-from-sos (str 70782) (keyword "Bill#") (keyword "Fin. Area") mapped-data)]
my-bldg-sqft))
当我可以检查 repl 中的变量时,调试更容易了。作为一种解决方法,我已经将一个库转换为 运行 和一个 main,但它不如 repl
debugging
有效
我需要什么settings/configuration才能从 repl 中调用函数?
当您 运行 $ lein repl
启动一个 JVM 实例并加载类路径中的所有命名空间时,因此 (load-file "example.clj") 不是必需的。
您要执行的操作的正确顺序是:
$ lein repl
user=>(require 'util.core)
nil
user=>(in-ns 'my-ns.core)
nil
my-ns.core=>(bldg-sqft-test)
或
$ lein repl
user=>(require '[util.core :refer :all])
nil
user=>(bldg-sqft-test)
如果您需要以某种方式加载外部 .clj 文件,那么 (load-file "external.clj")
会将文件添加到类路径中,然后您可以像上面那样要求命名空间。
我正在使用
[ics@steamboy util]$ lein version
Leiningen 2.5.1 on Java 1.7.0_91 OpenJDK Server VM
使用 Clojure 1.6
在 lein repl
中,我曾经能够从 repl
.
util.core=> (load-file "src/util/core.clj")
#'util.core/-main
util.core=> (bldg-sqft-test)
并从 repl
.
(defn ret-val-from-sos
"Takes a value, a map key, an s-o-s, and returns first match."
[in-val map-key-1 map-key-2 s-o-s]
(doseq [x s-o-s]
(println (str (first x)))))
(defn bldg-sqft-test
[& args]
(let [bldg-cols (fetch-csv-data "bldg_sqft_cols.csv")
bldg-data (fetch-csv-data "Buildingsqft.csv")
mapped-data (xform-sos-in bldg-data bldg-cols)
my-bldg-sqft (ret-val-from-sos (str 70782) (keyword "Bill#") (keyword "Fin. Area") mapped-data)]
my-bldg-sqft))
当我可以检查 repl 中的变量时,调试更容易了。作为一种解决方法,我已经将一个库转换为 运行 和一个 main,但它不如 repl
debugging
我需要什么settings/configuration才能从 repl 中调用函数?
当您 运行 $ lein repl
启动一个 JVM 实例并加载类路径中的所有命名空间时,因此 (load-file "example.clj") 不是必需的。
您要执行的操作的正确顺序是:
$ lein repl
user=>(require 'util.core)
nil
user=>(in-ns 'my-ns.core)
nil
my-ns.core=>(bldg-sqft-test)
或
$ lein repl
user=>(require '[util.core :refer :all])
nil
user=>(bldg-sqft-test)
如果您需要以某种方式加载外部 .clj 文件,那么 (load-file "external.clj")
会将文件添加到类路径中,然后您可以像上面那样要求命名空间。