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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexander Kostiuchenko               2:463/672.419  08 Jun 2004  15:53:47
 To : yurik shestakov
 Subject : name from reference
 -------------------------------------------------------------------------------- 
 
 
  Как-то раз (а точнее 08 Jun 04 в 17:19) yurik shestakov писал(а) к Alexander
 Kostiuchenko:
 
  AK>> Была мысль вместо аттрибутов писать ext { my $a; my @b; ... }
  AK>> (реализация примерно следующая: sub ext(&) { # use PadWalker my
  AK>> $vars = peek_sub( $_[0] ); my $pad = peek_my(1); ${$pad->{$_}} =
  AK>> ext("$_") for grep {/^$/} keys %$vars; # for scalars ... # for
  AK>> other types }
 
  ys> Чего-то я не уловил сути в данной реализации, особенно две вещи:
  ys>    1) grep {/^$/} keys %$vars -- ты чего тут хочешь получить?
 
 имена всех скалярных переменных (естессно, вместо $ там \$)
 
  ys>    2) не понятно, что сделает ext("$_").
 
 пример вызова функции, осуществляющей биндинг (у меня ext(&) по-другому
 называется, имена случайно совпали, когда код в самом письме правил)
 
  AK>> Оказалось - PadWalker не умеет создавать переменные caller'a,
  AK>> только модифицировать. Да и strict пришлось бы отключать...
  ys> IMHO без грубого вмешательства во внутренности Perl такое
  ys> не провернуть.
 
 Вот как раз и было интересно, как вмешаться....
 
  AK>> Более-менее подходит вариант с local our $name. Хотя это не совсем
  AK>> то - из-за "побочного эффекта" с dynamical scoping. Так что вопрос
  AK>> все еще в силе.
  ys> p.s. Что-то у меня такое чувство, что без tie тут не обойтись.
 
 У tie недостаток есть - нельзя обьявить сразу несколько связанных переменных
 (т.е. сделать аналог my ($a,$b,@c) : Tied). И фиг бы с ним, если б хоть в этом
 случае была возможность избежать передачи строки с именем переменной.
 А с local our тоже проблема вылезла - в 5.6 для таких переменных аттрибуты
 просто игнорируются (не вызывается обработчик; в 5.8 все работает).
 --
 mailto: random at binet.kiev.ua                  //Александр
 
 ---
  * Origin: useless (2:463/672.419)
 
 

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

 Тема:    Автор:    Дата:  
 name from reference   Alexander Kostiuchenko   08 Jun 2004 01:04:07 
 Re: name from reference   yurik shestakov   08 Jun 2004 11:13:42 
 name from reference   Alexander Kostiuchenko   08 Jun 2004 09:50:05 
 Re: name from reference   yurik shestakov   08 Jun 2004 17:19:37 
 name from reference   Alexander Kostiuchenko   08 Jun 2004 15:53:47 
 Re: name from reference   yurik shestakov   09 Jun 2004 17:23:49 
 name from reference   Alexander Kostiuchenko   10 Jun 2004 00:42:16 
 Re: name from reference   yurik shestakov   10 Jun 2004 11:29:20 
 Re: name from reference   Andrew Alakozow   08 Jun 2004 13:37:34 
Архивное /ru.perl/402940c5e122.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional