Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在clojurescript中使用edn阅读器创建的地图?_Clojure_Clojurescript_Edn - Fatal编程技术网

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

如何在clojurescript中使用edn阅读器创建的地图?,clojure,clojurescript,edn,Clojure,Clojurescript,Edn,如我所料,这将以Clojure打印:bar: (println (:foo (clojure.tools.reader.edn/read-string "{:foo :bar}"))) ;=> :bar (let [data (cljs.reader/read-string "{:foo :bar}")] (println ((first (keys data)) data ))) ;=> :bar 但这会在ClojureScript中打印nil: 为了让事情变得更奇怪,正如

如我所料,这将以Clojure打印
:bar

(println (:foo (clojure.tools.reader.edn/read-string "{:foo :bar}")))
;=> :bar
(let [data (cljs.reader/read-string "{:foo :bar}")]
  (println ((first (keys data)) data )))
;=> :bar
但这会在ClojureScript中打印
nil

为了让事情变得更奇怪,正如我所期望的那样,这在ClojureScript中打印了
:bar

(println (:foo (clojure.tools.reader.edn/read-string "{:foo :bar}")))
;=> :bar
(let [data (cljs.reader/read-string "{:foo :bar}")]
  (println ((first (keys data)) data )))
;=> :bar
如何访问读取器创建的映射中的值?这是字符编码吗

编辑

以下是注释中请求的名称空间:

(ns clojuresite.homepage
  (:require-macros [hiccups.core :as hiccups])
  (:require [hiccups.runtime :as hiccupsrt]
            [cljs.nodejs :as node]
            [cljs.reader :as reader]))
println的返回值是nil,如果您正在使用emacs或在其他地方记录,那么打印输出可能会进入另一个缓冲区。也许您看到的是
println
的返回值,而不是它的输出

ClojureScript:cljs.user> (ns cljs.user (:require [cljs.reader :as edn]))
nil
ClojureScript:cljs.user> (println (:foo (cljs.reader/read-string "{:foo :bar}")))
:bar
nil
vs:

试试这个:

(.log js/console
  ((keyword "foo") (cljs.reader/read-string "{:foo :bar}")))
如果有效,则生成
﷐:bar
,旧生成的代码随处可见,应该运行
lein cljsbuild clean


0.0-1877
中有一个变化,它将生成的javascript中的关键字从
﷐:foo
to
cljs.core.Keyword

在新的clojurescript repl中运行第二个示例时,我得到了正确的答案。你用的是什么clojurescript版本?第二个例子对我也适用,你能把ns表单包含在上下文中吗?我真的很惊讶。我的cljs版本是0.0-1896。你是如何让它在repl中工作的?每次我尝试
(require'[cljs.reader:as reader])
时,我都会遇到一个编译错误。我在repl中使用了名称空间表单来要求它。我不确定这就是他所说的。请注意第三个示例的结果。我也不确定,这只是一个猜测和一个附带的工作示例。