Re: еще вопросик по perl
>
> DEO> ну да, почитал я главу про замыкания (closure) у Л.Уолла
> DEO> и откровенно говоря не понял смысла введения нового термина
>
> sub seqgenerator_generator {
> my $seed = 0;
> return sub { return $seed += 1 };
> }
>
> my $x = seqgenerator_generator(0);
> print &$x, &$x, &$x, "\n";
> my $y = seqgenerator_generator(0);
> print &$y, &$y, &$y, "\n";
> print &$x, &$x, &$x, "\n";
>
> Когда поймешь, как это работает - можно будет продолжить разговор.
[off] можно несколько в другом тоне? [/off]
дык вроде ясно, каждый вызов возвращает ссылку на ф-цию связанную с
конкретным экземпляром $seed, ну и так как ссылка на $seed существует и
после того как из seqgenerator_generator возвращено управление, то $seed
сборщиком мусора не удаляется (насколько я понимаю)
и выведет сия программа текст вроде:
123 (первый экземпляр)
123 (второй экземпляр)
456 (продолжаем первый экземпляр)
собственно клозура по определению в книжке - это ссылка на объект
находящийся в другом блоке
ну и в чем такая особенность данной ссылки что надо было определить
отдельный термин для сего до меня пока не дошло, извините
насколько я понимаю отдельный термин вводят когда предполагают
специфические действия с сущностью не присущие другим сущностям
но тут вроде блоки и ссылки вышеописанные действия перекрывают?
Reply to: