3

我正在关注 Datomic 示例架构,并且有一个实体的 ID 定义为

:db/id #db/id[:db.part/db]

#db/id是什么意思?模式加载了读取字符串,所以我猜它是有效的 Clojure 语法。

4

2 回答 2

8

这是 Clojure 1.4 中的一个新特性:阅读器文字

于 2012-06-09T15:16:52.170 回答
1

Jouni 是对的,它是读者的文字

更具体地说,阅读器文字#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]可以在特定事务中的多个位置使用,以引用同一个尚未创建的实体。

于 2013-02-12T14:42:58.867 回答