Почему после имени массива вместо скобок появляются круглые скобки и точки?
при доступе к элементу в массиве квадратные скобки используются следующим образом:
{'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].);
- Что означают скобки после имени массива, как в
PBox(someNumber)? Это еще один способ доступа к элементу array? - что делает "."до SBox1 и после SBox2 означает? Оба sbox1 и SBox2 являются массивами. Код компилируется без ошибок, но я не знаю, для чего эти точки.
1 ответов
Да, теперь я вижу, что вы делаете.
в самом деле (. и .) являются просто альтернативными способами (но очень редко!) письма [ и ] в Делфи.
если 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].);