【发布时间】:2013-09-27 09:17:40
【问题描述】:
这会在 Clojure 中打印 :bar,正如我所期望的那样:
(println (:foo (clojure.tools.reader.edn/read-string "{:foo :bar}")))
;=> :bar
但这会在 ClojureScript 中打印 nil:
(println (:foo (cljs.reader/read-string "{:foo :bar}")))
;=> nil
为了让事情变得更奇怪,这会在 ClojureScript 中打印 :bar,正如我所期望的那样:
(let [data (cljs.reader/read-string "{:foo :bar}")]
(println ((first (keys data)) data )))
;=> :bar
如何访问由阅读器创建的映射中的值?这是字符编码的事情吗?
编辑
这是 cmets 中请求的命名空间:
(ns clojuresite.homepage
(:require-macros [hiccups.core :as hiccups])
(:require [hiccups.runtime :as hiccupsrt]
[cljs.nodejs :as node]
[cljs.reader :as reader]))
【问题讨论】:
-
在新的 clojurescript repl 中运行第二个示例时,我得到了正确的答案。您使用的是哪个 clojurescript 版本?
-
第二个例子也适用于我,你能在上下文中包含 ns 表单吗?
-
这对我来说真的很令人惊讶。我的 cljs 版本是 0.0-1896。你是如何让它在 repl 中工作的?每次我尝试
(require '[cljs.reader :as reader])时都会出现编译错误。 -
我使用命名空间形式在repl中要求它。
标签: clojure clojurescript edn