0

clojure.core.edn/read自動名前空間のキーワードを解決する方法を指示する方法はありますか?

  (edn/read-string "{:not-namespaced \"ko\" }") ;;=> {:not-namespaced "ko"}
  (edn/read-string "{:namespaced/ok \"ko\" }")  ;;=> #:namespaced{:ok "ko"}
  (edn/read-string "{::namespaced \"ko\" }")    ;;=> Unhandled java.lang.RuntimeException Invalid token: ::namespaced autonamespaced does not work

"A keyword cannot begin with ::"であるため、最後の例外は理にかなっています。

この単純な例を使用することもできますが、 (カスタム タグを読み取る)load-fileの拡張性も必要です。edn

名前空間を解決する方法を指示するパラメーターがあると、構成ファイル (強制clojure.spec) がはるかに読みやすくなります。

4

2 に答える 2

0

したがって、私の場合、最も簡単な解決策は、構成ファイルで名前空間のないキーワードを指定して clojure.spec を使用することです (それができるとは知りませんでした)。

コア リーダー機能を使用することもできます。

Slack に関する Alex Miller からの引用:

はい、edn 構成ファイルに完全な名前空間が必要です req-un と opt-un を使用して非修飾キーの仕様を記述することもできます

通常のコア リーダー fns または clojure.edn リーダー fns のいずれかがタグ付けされたリテラルを読み取ることができるはずですが、 # 呼び出しをバインドしてリーダーをセットアップする必要があります

于 2016-07-26T16:55:03.963 に答える