Как распечатать партию текста или наоборот в DAML? - PullRequest
0 голосов
/ 11 января 2020

Я хотел проверить условие в коде DAML, но одно значение - party , а другое - text и, следовательно, получение ОШИБКИ:

• Couldn 'не соответствует типу' Party 'с' Text ', возникающим в результате функциональной зависимости между: constraint' DA.Internal.Record.HasField 'owner' AccountInfo Text ', возникающей в результате использования DA'Internal.Record.getField' instance 'DA .Internal.Record.HasField "владелец" AccountInfo Party 'на

if( login.party == "friend" || logout.party == "friend)
   userCId <- create Users with userType= "Friendly User",..
                            return (Right  userCId)

Ответы [ 2 ]

5 голосов
/ 12 января 2020

Как уже упоминал Шейн, вы можете использовать show (или partyToText) для преобразования в Text. Однако я не думаю, что это правильный подход к этому. Стороны следует рассматривать как абстрактные идентификаторы, и хотя песочница DAML позволяет вам использовать произвольные строки, это не так для других бухгалтерских книг.

Я бы посоветовал вместо жесткого кодирования проверки против указанной c стороны Вы расширяете шаблон дополнительным полем friend : Party, а затем сравниваете его. Затем, когда вы создаете шаблон, вы можете установить friend на "friend" в песочнице, но вы также можете установить его на что-то другое.

Таким образом, в итоге вы заменяете

template C with
  …
  choice C : ()
    controller …
    do if login.party == "friend"
       …

со следующим

template C with
  …
  friend : Party
  choice C : ()
    controller …
    do if login.party == friend
       …
0 голосов
/ 12 января 2020

Вызов show на ваше Party значение должно сработать.

if show login.party == "friend" ...
...