1

当我在 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

希望能深入了解/解释为什么这个关键字生成器返回不同的结果。

REPL Repl_screenshot

应用程序 App_screenshot

已编辑- 截图

4

1 回答 1

2

我认为您的环境可能存在问题。

我使用plain-old 进行了测试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"] 
  ...
于 2016-10-31T15:32:54.593 回答