data-structures - Clojure - 如何声明记录的集合或向量
问题描述
如何定义记录集合或记录向量?
我有这个片段代码:
(defrecord Transaction [a, b, c])
我想定义一个名为 LastTransactions 的 Transaction 集合来实现这样的函数:
(defn can-authorize
"Validate Authorization by Transaction"
[^Transaction transaction, ^LastTransactions lastTransactions]
(... business logic)
)
第一个问题,这是正确的方法吗?
其次,我如何声明该结构?
解决方案
Clojure 的类型提示不提供任何类型验证 - 您可以为此使用Clojure Spec或Plumatic Schema。它们仅用于编译器以防止在对参数调用 Java 方法时进行反射。为此,您不需要键入提示向量,因为 Clojure 的集合( 、 等)的核心函数在first
设计conj
上不需要对标准集合进行反射。
但是,如果需要,您可以键入提示从lastTransaction
序列中提取的元素,例如:
(defn can-authorize
"Validate Authorization by Transaction"
[^Transaction transaction, lastTransactions]
...
(for [^Transaction t lastTransactions]
(...do-something-with t))
推荐阅读
- javascript - 如何添加“click”事件侦听器或访问 JSON 中提到的“ref”
- sql - 如何构建有限投票系统设计
- vue.js - 从 pixi Graphic 设置和获取名称
- ip - 私有 IP 地址可以是 25.* 的形式吗?*。*
- scala - Scala 将 java.sql.ResultSet 转换为 Json 对象
- node.js - 分配后未设置的变量
- c# - Android 游戏保存/加载(统一)
- phabricator - Phabricator 约束总是返回“参数 \"constraints\" 必须是约束映射,得到 \"string\"。”
- javascript - 如何在可滚动表中保持动态添加的行
- character-encoding - mpdf php库不显示英镑货币符号£