property в модуле

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

property в модуле

Сообщение alexs »

Хотел использовать property в модуле. И не понял - как правильно свойство объявить так, чтобы оно ссылалось на переменную, объявленную в implementation секции.
Я понимаю - что хочу странного, но не хочется давать в доступ саму перемунню. И в тоже время не хочется писать функцию - всёж лишние вызовы.
Вышел из положения через inline - функцию. Но красивее использовать property.
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Код: Выделить всё

interface

function getA : TA; inline;

property A : TA read getA;

implementation

var
  vA : TA;

function getA : TA; inline;
 begin
  Result := vA;
 end;
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Именно так я смог.
А вот чтобы напрямую ссылаться на переменну:

Код: Выделить всё

interface
property A : TA read vA;
implementation
var
  vA : TA;


Понятное дело, что при таком объявлении нарушается главный принци видимости. Но может есть какой-то модификатор для переменных типа forward-а?
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Насколько мне известно — нет. Да оно, по большому счету, и ни к чему.
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Красиво. Код должен быть красив.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

alexs
Чтобы напрямую - переменная должна лежать в той же области видимости. А у Вас такого нет.
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

alexs писал(а):Красиво. Код должен быть красив.

Увы, я не представляю, как тут можно сделать красиво, даже внося изменения в синтаксис — добавлять секцию private в интерфейс тоже как-то криво.
Вот свойства классов были бы, пожалуй, вполне...
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Vadim писал(а):Чтобы напрямую - переменная должна лежать в той же области видимости. А у Вас такого нет.

Я именно это и говорю.
Иван Шихалев писал(а):Увы, я не представляю, как тут можно сделать красиво, даже внося изменения в синтаксис

Просто думал, что может что-то пропустил из новшеств. Ладно, пока обойдёмся inline функциями.
Ответить