property в модуле

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

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

property в модуле

Сообщение alexs » 06.02.2011 01:14:24

Хотел использовать property в модуле. И не понял - как правильно свойство объявить так, чтобы оно ссылалось на переменную, объявленную в implementation секции.
Я понимаю - что хочу странного, но не хочется давать в доступ саму перемунню. И в тоже время не хочется писать функцию - всёж лишние вызовы.
Вышел из положения через inline - функцию. Но красивее использовать property.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: property в модуле

Сообщение Иван Шихалев » 06.02.2011 10:49:28

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

function getA : TA; inline;

property A : TA read getA;

implementation

var
  vA : TA;

function getA : TA; inline;
begin
  Result := vA;
end;
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: property в модуле

Сообщение alexs » 06.02.2011 13:05:03

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

Код: Выделить всё
interface
property A : TA read vA;
implementation
var
  vA : TA;


Понятное дело, что при таком объявлении нарушается главный принци видимости. Но может есть какой-то модификатор для переменных типа forward-а?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: property в модуле

Сообщение Иван Шихалев » 06.02.2011 13:31:24

Насколько мне известно — нет. Да оно, по большому счету, и ни к чему.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: property в модуле

Сообщение alexs » 06.02.2011 13:34:26

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

Re: property в модуле

Сообщение Vadim » 06.02.2011 13:45:49

alexs
Чтобы напрямую - переменная должна лежать в той же области видимости. А у Вас такого нет.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: property в модуле

Сообщение Иван Шихалев » 06.02.2011 14:01:42

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

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

Re: property в модуле

Сообщение alexs » 06.02.2011 14:49:59

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

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

Просто думал, что может что-то пропустил из новшеств. Ладно, пока обойдёмся inline функциями.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Рейтинг@Mail.ru