我正在关注Datomic示例模式,并且有一个定义为
的实体的ID:db/id #db/id[:db.part/db]
#db / id 的含义是什么?模式加载了read-string,所以我猜它是有效的Clojure语法。
答案 0 :(得分:8)
这是Clojure 1.4中的新功能:a reader literal。
答案 1 :(得分:1)
Jouni是对的,它是reader literal。
更具体地说,读者文字 #db / id [:db.part / db] 将在:db.part / db 分区中创建临时实体ID
构建事务时可以使用此临时ID。如果事务成功应用于数据库(即“事务处理”),则临时ID将被数据库中的永久实体ID替换。
此特定读者文字的一般形式是 #db / id [partition-name value *] ,其中value是一个可选的负值,允许临时id在其中唯一且确定性地区分单笔交易。
这是一个很大的便利,例如。 #db / id [:db.part / user -300] 可以在特定事务中的多个位置使用,以引用同一个尚未创建的实体。