|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Kostiuchenko 2:463/672.419 30 May 2005 23:14:23 To : Maxim Yemelyanov Subject : lazy evaluation -------------------------------------------------------------------------------- Как-то раз (а точнее 28 May 05 в 15:54) Maxim Yemelyanov писал(а) к All: MY> # в этом месте %h не видно MY> $expr = 'foo: $h{foo},\nbar: $h{bar}'; MY> А хотелось бы определять все $expr в области данных модуля и Hе совсем понятно, где ты в Perl нашел область данных. __DATA__ ? ;-) MY> использовать далее в коде, где все используемые переменные уже в MY> области видимости. Как сделать? Можно несколько упростить задачу. Возможно, подойдет такой вариант: { package LazyStr; use overload '""' => sub { shift->() }; sub new { bless pop } } my $z; my $expr = new LazyStr sub { "z: $z\nX::data: $X::data" }; { package X; our $data = 777; } $z = 55; print $expr; В принципе можно сделать дословно именно то, что ты описываешь. Hо это гораздо, гораздо заморочней... -- mailto: random at binet.kiev.ua //Александр --- * Origin: useless (2:463/672.419) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/4029429c12ea.html, оценка из 5, голосов 10
|