TSet[A] 是一个可以参与 STM 中事务可变集合。 创建一个 TSet 创建一个空的 TSet: 或创建具有指定值的 TSet: 或者,您可以通过具有值的集合来创建 TSet: 如果提供了重复项,则取最后一个。 将一个值加入 TSet 可以通过以下方式将新元素添加到集合中: 如果集合已经包含元素,则不会进行任何修改。 从 TSet 中删除元素 从 TSet 中删除元素的最简单方法是使用 delete 函数: 同样,可以删除满足所提供函数参数的每个元素: 或者,您可以保留所有与函数参数相匹配的元素: 请注意,retainIf 和 removeIf 与 filter 和 filterNot 具有相同的目的。分别命名它们的原因是要强调其本质上的区别。也就是说,retainIf 和 removeIf 都是破坏性的,调用它们会修改集合本身。 TSet 的并集 Set A 和 Set B 的并集表示属于 Set A 或 Set B 或两者都属于的元素集。使用 A union B 函数来修改 A 集合(取得两者的并集)。 TSet 的交集 Set A 和 Set B 的交集指的是同时属于 A 和 B 的元素集。使用 A intersect B 函数修改 A 集合(来取得交集)。 TSet 的差集 Set A 和 Set B 的差集是包含于集合 A但,集合 B 中没有元素。使用 A diff B 函数来获得。The difference between sets A and B is the set containing elements of set A but not in B. Using A diff B method modifies set A. 转换 TSet 的元素 transform(A => A) 函数允许基于集合中的每个元素计算一个新值: 以下可以压缩 TSet: 上面示例得到的结果集只有一个元素。 请注意,transform 的作用与 map 相同。对其进行不同命名的原因是要强调其本质上的区别。也就是说,transform 是破坏性的,调用它会修改集合本身。 可以通过 transformM 效果化地映射元素: fold 可以使用指定的二元运算折叠 TSet 的元素: 元素可以通过 foldM 有效折叠:The elements can be folded effectfully via foldM: 对 TSet 中的元素执行side-effect foreach 用于对集合中的每个元素执行副作用: 检查 TSet 的成员 检查元素是否存在于 TSet 中: 将 TSet 转换为 List 可以按以下方式获取集合元素的列表: TSet 的大小 集的大小可以通过以下方式获得: