Clojure 动态关键字生成器函数 returns 意外结果
Clojure dynamic keyword builder function returns unexpected results
当我在 repl 中定义我的函数时,它按我预期的那样工作。当我将它放入命名空间(即我的应用程序)并重新加载 repl 时,我丢失了关键字上的 namespace
组件。我不确定我在这里遗漏了什么。
;; Repl
(defn repl-keyword-gen [k str] (keyword (name k) str))
(repl-keyword-gen :test "example")
;;=> :test/example
;; App - example.core
(defn app-no-sym-keyword-gen [str] (keyword "test" str))
(defn app-with-sym-keyword-gen [k str] (keyword (name k) str))
(app-no-sym-keyword-gen "example")
;;=> :test/example
(app-with-sym-keyword-gen :test "example")
;;=> :example <----- Not sure about this one right here
希望了解 insight/explanation 为什么此关键字构建器 returns 不同的结果。
回复
APP
已编辑 - 屏幕截图
我觉得你的环境可能有问题。
我使用普通的 lein run
进行了测试并获得了命名空间关键字:
(ns clj.core
(:require
[tupelo.core :as t]
[clj-time.core :as tm]
))
(t/refer-tupelo)
;; App - example.core
(defn app-no-sym-keyword-gen [str] (keyword "test" str))
(defn app-with-sym-keyword-gen [k str] (keyword (name k) str))
(spyx (app-no-sym-keyword-gen "example"))
(spyx (app-with-sym-keyword-gen :test "example"))
(defn -main [& args]
(println "-main"))
结果:
~/clj > lein run
(app-no-sym-keyword-gen "example") => :test/example
(app-with-sym-keyword-gen :test "example") => :test/example
-main
要使 (spyx ...)
部分正常工作,您需要在 project.clj:
:dependencies [
[tupelo "0.9.9"]
...
当我在 repl 中定义我的函数时,它按我预期的那样工作。当我将它放入命名空间(即我的应用程序)并重新加载 repl 时,我丢失了关键字上的 namespace
组件。我不确定我在这里遗漏了什么。
;; Repl
(defn repl-keyword-gen [k str] (keyword (name k) str))
(repl-keyword-gen :test "example")
;;=> :test/example
;; App - example.core
(defn app-no-sym-keyword-gen [str] (keyword "test" str))
(defn app-with-sym-keyword-gen [k str] (keyword (name k) str))
(app-no-sym-keyword-gen "example")
;;=> :test/example
(app-with-sym-keyword-gen :test "example")
;;=> :example <----- Not sure about this one right here
希望了解 insight/explanation 为什么此关键字构建器 returns 不同的结果。
回复
APP
已编辑 - 屏幕截图
我觉得你的环境可能有问题。
我使用普通的 lein run
进行了测试并获得了命名空间关键字:
(ns clj.core
(:require
[tupelo.core :as t]
[clj-time.core :as tm]
))
(t/refer-tupelo)
;; App - example.core
(defn app-no-sym-keyword-gen [str] (keyword "test" str))
(defn app-with-sym-keyword-gen [k str] (keyword (name k) str))
(spyx (app-no-sym-keyword-gen "example"))
(spyx (app-with-sym-keyword-gen :test "example"))
(defn -main [& args]
(println "-main"))
结果:
~/clj > lein run
(app-no-sym-keyword-gen "example") => :test/example
(app-with-sym-keyword-gen :test "example") => :test/example
-main
要使 (spyx ...)
部分正常工作,您需要在 project.clj:
:dependencies [
[tupelo "0.9.9"]
...