在Clojure中@(at符号)是什么意思?

时间:2014-07-07 21:35:17

标签: clojure datomic

我找到了这行Clojure代码:@(d/transact conn schema-tx)。它是一个创建数据库模式的Datomic语句。由于难以搜索“@”等字符,我在Google上找不到任何相关内容。

'at'符号在第一个括号之前是什么意思?

3 个答案:

答案 0 :(得分:9)

这是 deref 宏字符。您在Datomic的背景下寻找的是:

http://docs.datomic.com/transactions.html

处理交易下的

  

在Clojure中,您还可以使用deref方法或@来获取   交易的结果。

有关Clojure中 deref 的更多信息,请参阅:

http://clojuredocs.org/clojure_core/clojure.core/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符号@延迟,从而获得此引用指向的值。

顺便说一句,如果您查看例如搜索引擎,您将会在搜索引擎中找到结果。 for" Clojure at sign"。但它需要一些耐心; - )

答案 2 :(得分:1)

@相当于Clojure中的deref。 transact返回你决定获得结果的未来。 deref / @将阻塞,直到事务完成/中止/超时。