【发布时间】:2020-08-09 07:34:19
【问题描述】:
我正在将地图的键值打印到 html,而键名称空间正在消失,这是我不想要的。
下面的layout调用打嗝的html5进行渲染:
(layout (str "Path " (:path/title path))
[:h1 "Title: " (:title path) slug]
[:p (str path)] ; prints "{:db/id 17592186045542, :path/title "sdf"}"
(println (keys path)) ; prints in terminal "(:db/id :path/title)"
[:p (keys path)] ; prints "idtitle"
(for [[k v] path] [:p k " " v]) ; prints "id 17592186045542" /n "title sdf"
(map (fn [[k v]] [:p k " " v]) path)))) ; same as above
在(keys path) 和for 和map 调用中,键的“:db/”和“:path/”命名空间都不会呈现。为什么?
【问题讨论】:
-
我想这些键是隐式的
named,这与你在它们上显式使用str的好情况不同。也许你应该使用[:p (str k) " " (str v)]或者干脆使用[:p (str/join " " [k v])] -
是的,这行得通 :) 所以现在我想知道是什么让隐式调用
name成为功能,而不是错误... -
我的猜测是任何一种方式都不完美,但是命名键对我来说感觉更笼统,因为在应用程序上下文之外,命名空间通常是无关紧要的