Как получить текущий идентификатор контракта при выполнении выбора

#daml

#daml

Вопрос:

Как я могу получить идентификатор контракта при выполнении выбора, поскольку это относится к текущему контракту, но не к идентификатору контракта?

Я не могу найти его через DAML SDK.

Ответ №1:

В неиспользуемом выборе есть неявная переменная self , которая предоставляет идентификатор контракта текущего контракта. Это похоже на неявную переменную, this которая предоставляет содержимое контракта в пределах выбора.

Текущая семантика DAML определяет, что контракт архивируется в начале выбора пользователя, поэтому, даже если у вас был доступ к self в выборе пользователя, вы ничего не могли бы с этим сделать.

Ответ №2:

Неявная self переменная фактически видна во всех вариантах, не использующих или иным образом. Однако, как указывалось, в настоящее время это не имеет значения при выборе потребителя, потому что поведение выбора потребителя заключается в том, что экземпляр контракта, для которого выполняется выбор, архивируется перед выполнением тела выбора (то есть семантика является «предварительной потребляющей»).). В будущей версии набор аннотаций выбора будет расширен, чтобы включать preconsuming и postconsuming . При выборе после использования контракт, на который ссылается self , останется активным на протяжении всего текста выбора и будет заархивирован в конце. Выбор, не помеченный preconsuming , noconsuming или postconsuming , по умолчанию будет использовать предварительно используемую семантику (как и сегодня).