6.6.3 Массив свойств |
Вверх Предыдущий Следующий |
Можно также использовать и массив свойств. Это свойства, которые имеют индекс, так же, как его имеет массив. Индекс может быть одномерным или многомерным. В отличии от массива (статического или динамического), индекс массива свойств может быть не только порядкового типа, но но и любого другого типа. Read specifier (спецификатор чтения) для массива свойств является методом (функцией), которая имеет тотже тип возвращаемого значения, что и тип элемента свойства. Функция должна иметь в качестве единственного параметра переменную одного и того же типа, что и тип индекса. Для массива свойств, нельзя указать поле котрое бы использовал read specifier. Write specifier (спецификатор записи) для массива свойств является метод (процедур), которая имеет два аргумента: первый аргумент имеет тот же тип, что и индекс, а второй аргумент является параметром того же типа, что и тип элемента свойства. В качестве примера, смотри следующее объявление: Type TIntList = Class Private Function GetInt (I : Longint) : longint; Function GetAsString (A : String) : String; Procedure SetInt (I : Longint; Value : Longint;); Procedure SetAsString (A : String; Value : String); Public Property Items [i : Longint] : Longint Read GetInt Write SetInt; Property StrItems [S : String] : String Read GetAsString Write SetAsstring; end;
Var AIntList : TIntList; Тогда следующие операции будут справедливы: AIntList.Items[26] := 1; AIntList.StrItems['twenty-five'] := 'zero'; WriteLn ('Item 26 : ',AIntList.Items[26]); WriteLn ('Item 25 : ',AIntList.StrItems['twenty-five']); В то время как эти операции будет генерировать ошибку: AIntList.Items['twenty-five'] := 1; AIntList.StrItems[26] := 'zero'; Поскольку типы индексов неверны. Массив свойств может быть многомерный: Type TGrid = Class Private Function GetCell (I,J : Longint) : String; Procedure SetCell (I,J : Longint; Value : String); Public Property Cellcs [Row,Col : Longint] : String Read GetCell Write SetCell; end; Если есть размер N, то типы первых N аргументов методов Get и Set должны соответствовать типам индексов спецификаторов N в определении массива свойств. |