你如何在clojurescript中使用edn阅读器创建的地图?

bma*_*ddy 5 clojure clojurescript edn

这正如我所期望的那样:barClojure中打印:

(println (:foo (clojure.tools.reader.edn/read-string "{:foo :bar}")))
;=> :bar
Run Code Online (Sandbox Code Playgroud)

但这打印nilClojureScript中:

(println (:foo (cljs.reader/read-string "{:foo :bar}")))
;=> nil
Run Code Online (Sandbox Code Playgroud)

为了让事情变得陌生,我会按照我的预期:barClojureScript中打印:

(let [data (cljs.reader/read-string "{:foo :bar}")]
  (println ((first (keys data)) data )))
;=> :bar
Run Code Online (Sandbox Code Playgroud)

如何访问读者创建的地图中的值?这是一个字符编码的东西吗?

编辑

这是注释中请求的命名空间:

(ns clojuresite.homepage
  (:require-macros [hiccups.core :as hiccups])
  (:require [hiccups.runtime :as hiccupsrt]
            [cljs.nodejs :as node]
            [cljs.reader :as reader]))
Run Code Online (Sandbox Code Playgroud)

Jar*_*314 2

尝试这个:

\n\n
(.log js/console\n  ((keyword "foo") (cljs.reader/read-string "{:foo :bar}")))\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果有效并生成\xef\xb7\x90:bar,则您有旧的生成代码,您应该运行lein cljsbuild clean.

\n\n

0.0-1877在生成的 javascript 中,关键字发生了变化,从\xef\xb7\x90:foo变为cljs.core.Keyword

\n