如何检查元素是否存在于 DAML 的记录列表中?

How do I check if an element is present in list of records in DAML?

假设Event 是一个包含eventName 和eventParameter 等字段的记录。如果某些 eventName 说“EV1”存在于记录列表中,我想断言该条件。对于本机数据类型列表(比如说缔约方),我可以简单地检查文档中给出的 (elem in following) 。谁能帮我记录数据类型的语法是什么?

elem 是一个更通用的函数 any : (a -> Bool) -> [a] -> Bool 的实例,它接受一个谓词和一个元素列表,并且 returns 如果谓词对其中至少一个元素成立则为真列表。 elem x xs 等同于 any (\y -> x == y) xs.

使用any你可以表达你的例子如下:

data Event = Event with
  eventName : Text

test = scenario do
  assert $
    any (\r -> r.eventName == "EV1")
        [Event with eventName = "EV1"]
  assert $ not $
    any (\r -> r.eventName == "EV1")
        [Event with eventName = "EV2"]