为什么在数组名称后面有圆括号和圆点而不是括号?

时间:2011-03-01 16:13:46

标签: delphi syntax

当访问数组中的元素时,方括号的使用方式如下:

{'X is an int and Numbers is an int array'}
X := Numbers[8];

但是,在阅读其他人的代码时,我有时会发现以下语法:

{'PBox , SBox1 , SBox2 are arrays of int , And X,Y are ints'}
Result := Result or PBox(.SBox1[X] or SBox2[Y].);
  1. 在数组名称后加括号是什么意思,如PBox(someNumber)?这是另一种访问数组元素的方法吗?
  2. “。”是什么在SBox1之前和SBox2之后是什么意思? SBox1和SBox2都是阵列。代码编译没有错误,但我不知道那些点是什么。

1 个答案:

答案 0 :(得分:16)

是的,现在我看到你做了什么。

事实上,(..)只是在Delphi中编写[]的替代方式(但非常罕见!)。

如果PBox是一个数组,那么PBox[a](或等效地,PBox(.a.))需要a为整数,对吧?如果SBox1[x]SBox2[Y]是整数,那么它们的按位or也是如此。 (按位or是一个采用两个整数并返回一个新整数的操作。)因此,PBox(.SBox1[X] or SBox2[Y].)是数组(SBox1[X] or SBox2[Y])中的PBox元素,即整数。因此,计算or与此整数之间的按位Result是有意义的,这就是完成的事情:

Result := Result or PBox(.SBox1[X] or SBox2[Y].);