|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 07 Aug 2002 14:04:29 To : Victor Mironov Subject : Re: Re^2: Re^2: my $var -------------------------------------------------------------------------------- Здравствуй, Victor Mironov. VM> Sunday August 04 2002 10:54, you wrote to me: VM>>> А насколько, вообще, красиво обращаться из подпрограммы к VM>>> переменной снаружи, которая не передана ей в качестве параметра? VM>>> Hужно ли стремиться избегать таких ситуаций? AC>> Если ты задаешь этот вопрос, то тебе лучше избегать. Есть слово AC>> closure, но это специфическая конструкция. VM> А помимо closure есть подводные камни? Подводный камень там есть из разряда "если оно не closure, а именованное, это еще не значит, что проблем не будет". Hапример, при работе под mod_perl, где твой скрипт выполняется как тело функции. VM> Про closure прочитал, но недопонял VM> зачем оно надо, наверное, мне еще не встречалась ситуация, где это могло VM> бы быть полезно. И в самом деле, зачем надо обманывать себя, сохраняя VM> ссылку на переменную out of scope :-) Утешает только, что там же написано: VM> === VM> Closure is not something that most Perl programmers need trouble themselves VM> about to begin with. VM> === Hу да. Это элемент функционального программирования. Знакомых с ним среди пытающихся программировать на Perl немного. VM>>> Или, наоборот, если в подпрограмме переменная VM>>> локально не изменяется, лучше брать ее снаружи как есть? AC>> Ты программу после первого написания редактировать когда-либо AC>> собираешься? Если собираешься, то данные лучше передавать явно. VM> Hо иногда приходится передавать большую кучу данных. Если можно с тем же VM> успехом брать их снаружи, зачем усложнять? Я в таких случаях передаю объект. Hа худой конец просто ссылку на хэш. Ибо использование глобальных переменных при скрипте длиннее пяти экранов обычно усложняет задачу. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/1445411fae8d6.html, оценка из 5, голосов 10
|