5

正如我所料,这会:barClojure中打印:

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

但这会打印nilClojureScript中:

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

为了让事情变得更奇怪,正如我所料,这:barClojureScript中打印:

(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]))
4

2 回答 2

2

println的返回值为 nil,如果您使用 emacs 或在其他地方记录,则 print 的输出可能会进入另一个缓冲区。也许您看到的是返回值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

与:

ClojureScript:cljs.user> (:foo (cljs.reader/read-string "{:foo :bar}"))
:bar
于 2013-09-26T23:32:33.193 回答
2

尝试这个:

(.log js/console
  ((keyword "foo") (cljs.reader/read-string "{:foo :bar}")))

如果这有效并生成﷐:barlein cljsbuild clean.

0.0-1877在生成的 javascript 中,切换的关键字从﷐:foo到发生了变化cljs.core.Keyword

于 2013-09-27T01:05:30.670 回答