我可以使用集合类型作为数组索引吗?

约翰

我不能将set类型用作数组的大小指示符,但是对于小型集合这样做是完全明智的。

假设我有以下代码:

  TFutureCoreSet = set of 0..15;
  TLookupTable = record
    FData: array[TFutureCoreSet] of TSomeRecord; //error ordinal type required
  ....

以下代码可以编译和运行。

  TFutureCoreSet = set of 0..15;
  TLookupTable = record
    FData: array[word] of TSomeRecord;

但是,这断开了允许的状态数TFutureCoreSet与查找表中的元素之间的链接
是否有一种简单的方法将两者链接在一起,所以当一个更改另一个更新时也是如此?

乌韦·拉贝(Uwe Raabe)

只是略有不同:

type
  TFutureCore = 0..15;
  TFutureCoreSet = set of TFutureCore;
  TFutureCoreIndex = 0..(2 shl High(TFutureCore)) - 1;
  TLookupTable = record
    FData: array[TFutureCoreIndex] of TSomeRecord;
  end;

使用a的另一个好处TFutureCoreIndex是您可以使用它来强制转换TFutureCoreSet为序数类型。在强制转换集合类型时,必须强制转换为相同大小的序数类型。

AllowedStates = LookupTable.FData[TFutureCoreIndex(FutureCores)]; //works
AllowedStates = LookupTable.FData[Integer(FutureCores)]; //invalid typecast
AllowedStates = LookupTable.FData[Word(FutureCores)]; //works, but not type safe.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我可以使用HTML元素作为对象键吗?

大熊猫可以使用列作为索引吗?

我们可以使用数组索引之类的索引来访问List <T>吗?

Java可以使用String作为索引数组键吗?(例如:array [“ a”] = 1;)

我必须在GAE Endpoints API中使用CollectionResponse作为返回类型,还是可以使用实体的Java集合?

在Perl 6中,我可以使用数组作为哈希键吗?

Typescript:可以使用enum作为函数参数类型吗?

OBJ-C,我可以使用协议作为函数参数的参数类型吗?

我可以使用模板作为安全的解决方案来多态处理数组吗?

我可以使用类型作为值(或从构造函数参数正确推断通用类类型)吗?

我可以使用Mypy存根作为接口吗?

反应:我可以使用名为“索引”的道具吗

我可以使用反向引用作为关联数组键吗?

我可以使用非日期类型作为Julia中TimeSeries对象的时间索引吗?

我可以使用其他函数的类型信息作为Python中的返回类型吗?

Coq:我可以使用类型参数作为连续参数的类型吗?

我可以使用指针获取int类型的2D数组吗?

我可以使用flutter在Firestore上创建索引吗?

我可以使用数组作为索引切片numpy数组吗?

我可以在TypesScript中使用泛型类型作为对象索引类型吗?

我可以使用cd ../ ..作为别名吗?

我可以使用枚举作为结构名称吗?

可以使用“ div id”作为数组名称吗?

我可以使用相同的dbcontext作为ASP身份吗

我可以使用索引提高此请求的效率吗?

我可以使用js变量作为mvc数组的索引吗?

azure 搜索中的索引器可以使用任何其他字符而不是 , 作为分隔符来打断单词并放入集合类型 azure 搜索索引字段吗?

我可以使用 IEnumerator 作为更新函数吗?

我可以使用张量作为列表索引吗?