Почему после имени массива вместо скобок появляются круглые скобки и точки?
при доступе к элементу в массиве квадратные скобки используются следующим образом:
{'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].);