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_スクリーンショット

アプリ アプリ_スクリーンショット

編集済み- スクリーンショット

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 に答える