Почему в скобках и точках после имени массива есть скобки? - PullRequest
7 голосов
/ 01 марта 2011

При доступе к элементу в массиве квадратные скобки используются следующим образом:

{'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 Ответ

16 голосов
/ 01 марта 2011

Да, теперь я вижу, что вы делаете.

На самом деле, (. и .) являются просто альтернативными (но очень редкими!) Написаниями [ и ] в 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].);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...