执行选择时如何获取合同 ID,因为这是指当前合同而不是合同 ID?
我无法通过 DAML SDK 找到它。
在非消费选择中,有一个隐式变量self
提供当前合约的合约 ID。这类似于在选择this
中提供合同内容的隐式变量。
当前的 DAML 语义指定合约在消费选择开始时存档,因此即使您有权访问self
消费选择,也无能为力。
隐式self
变量实际上在所有选择中都是可见的,无论是非消耗的还是其他的。正如所指出的,目前它在消费选择中没有任何价值,因为消费选择的行为是执行选择的合约实例在执行选择主体之前存档(也就是说,语义是“pre-消费”)。在未来的版本中,选择注释集将扩展到包括preconsuming
和postconsuming
。在消费后选择中,引用的合约self
将在整个选择主体中保持活动状态并在最后存档。未使用 注释的选择preconsuming
,noconsuming
或者postconsuming
将默认为预消费语义(就像今天一样)。