#daml
#daml
Вопрос:
Как я могу получить идентификатор контракта при выполнении выбора, поскольку это относится к текущему контракту, но не к идентификатору контракта?
Я не могу найти его через DAML SDK.
Ответ №1:
В неиспользуемом выборе есть неявная переменная self
, которая предоставляет идентификатор контракта текущего контракта. Это похоже на неявную переменную, this
которая предоставляет содержимое контракта в пределах выбора.
Текущая семантика DAML определяет, что контракт архивируется в начале выбора пользователя, поэтому, даже если у вас был доступ к self
в выборе пользователя, вы ничего не могли бы с этим сделать.
Ответ №2:
Неявная self
переменная фактически видна во всех вариантах, не использующих или иным образом. Однако, как указывалось, в настоящее время это не имеет значения при выборе потребителя, потому что поведение выбора потребителя заключается в том, что экземпляр контракта, для которого выполняется выбор, архивируется перед выполнением тела выбора (то есть семантика является «предварительной потребляющей»).). В будущей версии набор аннотаций выбора будет расширен, чтобы включать preconsuming
и postconsuming
. При выборе после использования контракт, на который ссылается self
, останется активным на протяжении всего текста выбора и будет заархивирован в конце. Выбор, не помеченный preconsuming
, noconsuming
или postconsuming
, по умолчанию будет использовать предварительно используемую семантику (как и сегодня).