delphi – 为什么形式[…]的文字具有看似依赖于上下文的含义?
考虑以下程序:
{$APPTYPE CONSOLE} type TMyEnum = (enum1,enum2,enum3); var Arr: TArray<TMyEnum>; Enum: TMyEnum; begin Arr := [enum3,enum1]; // <-- this is an array for Enum in Arr do Writeln(ord(Enum)); Writeln('---'); for Enum in [enum3,enum1] do // <-- this looks very much like the array above Writeln(ord(Enum)); Writeln('---'); Readln; end. 输出是: 2 0 --- 0 2 --- 为什么两个循环产生不同的输出? 解决方法
因为数组包含订单信息而一组不包含订单信息.
使用文档说明: 静态或动态数组的internal data format:
使用for循环is done in incremental order遍历这些索引:
另一方面,一套internal data format:
因此,所有这些“指示位”存储在一个相同的“值”中.这就是为什么一个集合可以是typecasted to an Integer type,以及为什么添加这些位的顺序丢失的原因:[enum3,enum1] = [enum1,enum3]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |