我找到了这行Clojure代码:@(d/transact conn schema-tx)
。它是一个创建数据库模式的Datomic语句。由于难以搜索“@”等字符,我在Google上找不到任何相关内容。
'at'符号在第一个括号之前是什么意思?
答案 0 :(得分:9)
这是 deref 宏字符。您在Datomic的背景下寻找的是:
http://docs.datomic.com/transactions.html
处理交易下的:
在Clojure中,您还可以使用deref方法或@来获取 交易的结果。
有关Clojure中 deref 的更多信息,请参阅:
答案 1 :(得分:6)
以下是Clojure默认语法和" sugar"的有用概述。 (即宏观定义)。
http://java.ociweb.com/mark/clojure/article.html#Overview
您将找到解释数字符号#
,其表示正则表达式或哈希映射,插入符^
,用于元数据,以及更多的" at签" @
。它是用于解除引用的糖形式,这意味着您可以获得引用所指向的实际值。
Clojure有三种参考类型:Refs,Atoms和Agents。
http://clojure-doc.org/articles/language/concurrency_and_parallelism.html#clojure-reference-types
您的字词@(d/transact conn schema-tx)
似乎提供了对原子的引用,并且您通过at符号@
延迟,从而获得此引用指向的值。
答案 2 :(得分:1)
@相当于Clojure中的deref。 transact返回你决定获得结果的未来。 deref / @将阻塞,直到事务完成/中止/超时。