说我可以选择一个整数来代表一个计数,我想创建一个具有该次数的合同,即执行多次代码块。
例如在Ruby中,可能看起来像这样:
n.times do
#run some code here
end
如何在DAML中实现这一目标?
答案 0 :(得分:2)
要进行N
次分类帐操作,最简单的方法是使用replicateA
中的DA.Action
函数。
daml 1.2
module ReplicateDaml
where
import DA.Action
template Demo
with
sig: Party
total: Int
where
signatory sig
testReplicate = scenario do
p <- getParty "party"
let
total = 10
p `submit` replicateA total $ create Demo with sig=p; total
replicateA
的类型签名为:
-- | `replicateA n act` performs the action n times, gathering the results.
replicateA : (Applicative m) => Int -> m a -> m [a]
您可以将其读取为:
此函数支持具有
m
类型类(API或接口)的实例(实现)的任何类型Applicative
。 它的第一个参数是Int
其第二个是类型为m
的“效果”,提供了类型为a
的值 它返回重复效果N次的结果,并将结果收集在一个列表中
您描述的create
的类型为:Update (ContractId a)
;并且在Update
实例化Applicative
类型类时(可以实现),您可以使用在Applicative
的{{1}}上工作的任何函数-自然包括{{ 1}}。
以这种方式使用时,请在类型签名中用Update
替换replicateA
,用Update
替换m
,这样:
(ContractId t)