Property(активные свойства)
Сказать по чести, я не разу их не применял, как то не нужно было. Но объяснить принцип их работы попробую. По сути Property есть ничто иное как две (именно 2) функции, но с чуть хитренькими возможностями и синтаксисом. Эти 2 функции имеют одинаковые имена, но одна из них работает на прием, друга на отдачу. Пример:
Type T Dim A As Integer Declare Property PR() As Integer Declare Property PR( Byval nevVal As Integer) End Type Property T.PR() As Integer Return A End Property Property T.PR( Byval A As Integer) this.A=A End Property Dim A As T A.PR=44 ? A.PR Sleep
Давайте, чтобы было более понятно, я в данной статье дальше активные свойства буду называть методами, думается мне так будет более удобочитаемо. Мы создали класс, в котором одно простое свойство и два метода. Обратите внимание, у первого из методов в конце указывается тип возвращаемого значения, он работает на отдачу. Второй подобен процедуре, может только принимать значения. Мы как раз ему и передаем в параметре значение 44 , которое он сохраняет в одном из свойств класса. А первый метод при вызове, возьмет значение из свойства и вернет нам его.
Вся необычность заключается только в передаче параметра принимаемому методу. Обратите внимание на то, что у принимаемого метода есть один входящий параметр (может быть много). С другой стороны, вызов не похож на вызов процедуры, а больше похоже на поле структуры, которому присваивается значение.
Из примера:
Метод (с одним параметром):
Property T.PR( Byval A As Integer)
Его вызов:
A.PR=44
Метод, который расчитан на прием, берет значение, которое мы присваиваем ему после знака равно и помещает себе в последний параметр. Ведь это только у нас передается один параметр, можно передать столько столько требуется. Пример:
Type T Dim A As Integer Declare Property PR(B As String) As Integer Declare Property PR( Byval A As Integer, Byval B As Integer) End Type Property T.PR(B As String) As Integer Print B; Return A End Property Property T.PR( Byval A As Integer, Byval B As Integer) Print B this.A=A+B End Property Dim A As T A.PR(56)=44 'вместо привычного A.PR(56,44) ? A.PR("Result=") Sleep
Все кроме последнего параметра передаются в скобках, последний передается
после знака равно. Так же вы можете заметить, что возвращаемый метод, тоже имеет
один параметр. Кстати он как раз больше одного параметра иметь и не может.
Собственно про property рассказывать больше нечего. Где и в каких местах кода вы будете их использовать, решать вам.
Всего доброго!
содержание | назад | вперед