私の関数をreplで定義すると、期待どおりに機能します。名前空間(つまりアプリ)にドロップしてreplを再読み込みすると、そのキーワードにnamespace
コンポーネントが失われます。私はここで何が欠けているのか分かりません。Clojure動的キーワードビルダー関数は予期しない結果を返します
;; 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を再起動し、問題のコードを貼り付けて問題なく動作することを確認します正しい。あなたは、 'app-with-sym-keyword-gen'を正しく定義していないかもしれません(またはREPLの異なるバージョンでそれを上書きしたかもしれません)。 –
'user =>(ns example.core)を再現できません nil example.core =>(defn app-no-sym-keyword-gen [str](キーワード" test "str)) # 'example.core/app-no-sym-keyword-gen example.core =>(キーワード(名前k)str)) # 'example.core/app-with- sym-keyword-gen example.core =>(app-no-sym-keyword-gen "例") :test/example example.core =>(app-with-sym-keyword-gen:test "example ") :test/example' – m0skit0
サーバが起動したらIntellij CursiveのNREPLサーバに接続します。すべてを再開しました。 – nrako