|
||||||||
|
Векторные свойства
Свойство может быть и векторным; в этом случае для программиста оно выглядит как массив:
На самом деле это поле может в действительности и не являться массивом (напомним, что вся обработка обращений к внутренним структурам класса может быть замаскирована). Для векторного свойства необходимо описать не только тип элементов массива, но также имя и тип индекса. И после read, и после write в этом случае должны стоять имена методов ? использование имени поля типа массив недопустимо. Метод, читающий значение векторного свойства, должен быть описан как функция, возвращающая значение того же типа, что и элементы свойства, и имеющая единственный параметр: того же типа и с тем же именем, что и индекс свойства:
Аналогично, метод, помещающий значения в такое свойство, должен первым параметром иметь индекс, а вторым ? переменную нужного типа (которая может быть передана как по ссылке, так и по значению):
У векторных свойств есть еще одна важная особенность. Некоторые классы в Delphi (списки, наборы строк) "построены" вокруг векторного свойства. Основной метод такого класса дает доступ к некоторому массиву, а все остальные методы являются вспомогательными. Специально для облегчения работы в этом случае векторное свойство может быть описано как default:
Когда у объекта есть такое свойство, то можно его не упоминать, а ставить индекс в квадратных скобках прямо у имени объекта:
Будьте внимательны с применением зарезервированного слова default ? как мы увидели, для обычных и векторных свойств оно употребляется в разных случаях и с разным синтаксисом. О роли свойств в Delphi красноречиво говорит следующий факт: у всех имеющихся в вашем распоряжении стандартных классов 100% полей недоступны и заменены базирующимися на них свойствами. Рекомендуем при разработке своих классов придерживаться этого же правила.
Для комментария : kadan@grsu.grodno.by | |||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |