delphi - 为什么数组名称后面有括号和点而不是方括号?

标签 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 都是数组。代码编译没有错误,但我不知道这些点的用途。

最佳答案

是的,现在我明白你在做什么了。

事实上,(..)只是写作的替代方式(但非常不常见!)[]在德尔福。

如果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].);

关于delphi - 为什么数组名称后面有括号和点而不是方括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5157123/

相关文章:

Delphi - 有关记录中方法的 RTTI 信息

delphi - TSaveDialog 和具有相同扩展名的 2 种格式

c# - 关键字 "auto"C++ 和 "dynamic"C#

generics - 我可以通过哪些不同的方式来声明对泛型类型进行操作的类型?

delphi - 类似于 Delphi 的 jSon_encode 函数,它接受 TDataSet

windows - 服务 OnExecute 失败,生成的线程未执行

multithreading - 日志记录和同步

C 代码在函数调用后声明预期的变量类型

c - 如何在解析表达式语法(如 PEG.js)中处理语法上的歧义(如在 C 中)

syntax - 当使用尾随逗号给定值时,Ansible 中的 --inventory 选项如何工作?