2012-06-09 40 views
3

我是繼Datomic示例模式並有定義爲語法:哈希(磅),那麼符號

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

什麼的#DB/ID含義爲實體的ID?模式使用read-string加載,所以我想這是有效的Clojure語法。

回答

1

Jouni是對的,這是一個reader literal

更具體地,讀取器字面#分貝/ ID [:db.part /分貝]將創建內的臨時實體ID:db.part /分貝分區。

建立交易時可以使用此臨時ID。如果交易成功應用於數據庫(即「交易」),則臨時ID將被數據庫中的永久實體ID替換。

此特定閱讀器文字的一般形式爲#db/id [分區名稱值*],其中value是可選的負值,它允許在單個事務中唯一確定性地區分臨時ID。

這是一個很大的方便,例如。 #db/id [:db.part/user -300]可以在特定事務中的多個位置使用,以引用同一個尚未創建的實體。