You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dafny中如何从集合初始化数组?(已知序列初始化方法)

Dafny中从集合初始化数组的方法

Dafny里集合是无序结构,而数组依赖有序的索引映射元素,所以要从集合初始化数组,核心是先把集合转换为序列,再沿用你熟悉的序列初始化数组的逻辑实现。

具体实现方式

有两种常用写法:

  1. 先显式转换集合为序列,再初始化数组
// uniques 是 int 类型的集合
var uniquesSeq := seq(uniques);
var b := new int[|uniquesSeq|](i requires 0 <= i < |uniquesSeq| => uniquesSeq[i]);
  1. 直接在数组初始化表达式内完成集合转序列的操作
// uniques 是 int 类型的集合
var b := new int[|uniques|](i requires 0 <= i < |uniques| => seq(uniques)[i]);

额外说明

由于集合本身无序,每次转序列的元素顺序可能不确定。如果需要固定顺序,可以先对转换后的序列排序,示例如下:

var sortedSeq := Sort(seq(uniques));
var b := new int[|sortedSeq|](i requires 0 <= i < |sortedSeq| => sortedSeq[i]);

内容的提问来源于stack exchange,提问作者cvl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:27:00