Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/371.32  27 Oct 2000  15:41:11
 To : develop@interpro.ru
 Subject : Re: manual self destroying?!
 -------------------------------------------------------------------------------- 
 
 dir> У меня есть класс Persistent, у которого есть метод die(). Этот метод
 dir> удаляет объект из базы данных. Также его задача уничтожить реальный
 dir> объект, чтобы никто, не дай бог, не вызвал save() для несуществующего
 dir> объекта, поэтому die() вызывает DESTROY.
 dir> Hо пока хоть одна ссылка на объект не вышла out of scope, объект не
 dir> физически не уничтожается!-(
 
 dir> Пусть есть такого рода код:
 
 dir> my $o = new Object; # возвращает blessed reference
 dir> $o->die();
 
 dir> $o->save if $o; # save - вызывается!
 
 dir> Как сделать, чтобы $o не было определено? $o = $o->die(); поможет лишь
 dir> отчасти (нельзя же убить все возможные ссылки на $o).
 dir> Как бороться?
 
 Решать ту задачу, которая стоит. Ее еще можно решать вежливо, а именно:
 удаленный объект метим, как удаленный (специфическое состояние самого
 объекта), и все методы класса это проверяют и об этом нещадно ругаются.
 
 -- 
 Счастливо!
   Ран.
 --- ifmail v.2.14.os-p7-tma3
  * Origin: MemoNet (2:5020/371.32@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: manual self destroying?!   Artem Chuprina   27 Oct 2000 15:41:11 
Архивное /ru.perl/17121d081efc0.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional