为什么#:crux.db{:id";a";}={:crux.db/id";a";}在clojure中?
我试图用repl运行这个脚本为什么#:crux.db{:id";a";}={:crux.db/id";a";}在clojure中?,clojure,Clojure,我试图用repl运行这个脚本 (clojure.set/rename-keys {:id "faeb2d4a-2415-423e-bf65-9266ae4c3326"} {:id :crux.db/id}) 它回来了 #:crux.db{:id“faeb2d4a-2415-423e-bf65-9266ae4c3326”} 而不是{:crux.db/id“faeb2d4a-2415-423e-bf65-9266ae4c3326”} 我认为有
(clojure.set/rename-keys {:id "faeb2d4a-2415-423e-bf65-9266ae4c3326"}
{:id :crux.db/id})
它回来了
#:crux.db{:id“faeb2d4a-2415-423e-bf65-9266ae4c3326”}
而不是{:crux.db/id“faeb2d4a-2415-423e-bf65-9266ae4c3326”}
我认为有问题,但数据实际上是正确的
(:crux.db/id #:crux.db{:id "faeb2d4a-2415-423e-bf65-9266ae4c3326"})
=> "faeb2d4a-2415-423e-bf65-9266ae4c3326"
(= #:crux.db{:id "faeb2d4a-2415-423e-bf65-9266ae4c3326"} {:crux.db/id "faeb2d4a-2415-423e-bf65-9266ae4c3326"})
=> true
为什么?这是一种简写,如果地图中的多个键具有相同的名称空间,则可以节省空间
(let [some-map {:crux.db/name "Joe Smith"
:crux.db/address "123 Foo Bar Lane"
:crux.db/phone "666.555.1234"
:crux.db/age 64}]
然后,一些地图
看起来像:
#:crux.db{:name "Joe Smith",
:address "123 Foo Bar Lane",
:phone "666.555.1234",
:age 69}
如果映射中的多个键具有相同的名称空间,则这是一种节省空间的简写方法
(let [some-map {:crux.db/name "Joe Smith"
:crux.db/address "123 Foo Bar Lane"
:crux.db/phone "666.555.1234"
:crux.db/age 64}]
然后,一些地图
看起来像:
#:crux.db{:name "Joe Smith",
:address "123 Foo Bar Lane",
:phone "666.555.1234",
:age 69}
请参见其中的“映射命名空间语法”解释
请参见其中的“映射命名空间语法”解释