5

私が期待するように、これはClojureで印刷:barされます:

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

しかし、これnilClojureScriptで出力されます:

(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

リーダーが作成したマップ内の値にアクセスするにはどうすればよいですか? これは文字エンコーディングですか?

編集

コメントで要求された名前空間は次のとおりです。

(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

これを試して:

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

それが機能し、 が生成される場合は、生成さ﷐:barれた古いコードがぶらぶらしているので、lein cljsbuild clean.

0.0-1877生成された JavaScript で、切り替えられたキーワードが からに変更され﷐:fooましたcljs.core.Keyword

于 2013-09-27T01:05:30.670 に答える
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 に答える