|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/17121d081efc0.html, оценка из 5, голосов 10
|