|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 11 Jul 2002 21:42:08 To : Artem Chuprina Subject : Re: переопределение функци й --------------------------------------------------------------------------------
Artem Chuprina wrote:
> Здравствуй, Vladyslav Shvedenko.
>
> VS> Hello, All!
> VS> Вот пришлось столкнуться с таким явлением, как динамическое
> VS> переопределение функций... вариант sub f1 {return 1} sub f2 {return
> VS> 5} print &f1; undef &f1; *f1=\&f2; print &f1; работает, тут
> VS> вроде бы все ясно... а вот как это ж сделать без явного определения
> VS> подставляемой функции f2 undef &f1; @{&f1}={return 5}
>
> *f1 = sub {return 5};
С этой штукой надо поосторожней. Подводных камней много. Самый поверхностный -
контроль прототипов функций. Более глубокие, к примеру, несовпадение пэкаджей
у sub {...} и у f1, в результате чего можно ошибиться в том, какие же именно
глобальные переменные "видит" функция main::f1. См. главу Symbol Tables в
perldoc perlmod
Андрей
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/528426e8ca24.html, оценка из 5, голосов 10
|