Re: еще вопросик по perl
> DEO> как-то return из под eval и вот аналог статических переменных :D
>
> Статические переменные - это аналог клозур (closure) для бедных (не
> знающих ничего лучше C, ну на худой конец C++). В перле есть нормальные
> клозуры.
почитал я про клозуры
да когда надо двум функциям разделить переменную
{
my $a;
sub foo1
{
return $a+1;
}
sub foo2
{
return $a+2;
}
}
получается действительно "для бедных"
хотя, такое обычно висит в отдельном модуле и есть не просит ;)
а вот когда эта переменная нужна только одной функции (ака генератор
бесконечной последовательности)
то вот так по моему изящнее:
mytype foo()
{
static mytype a=init_value();
return a+1;
}
чем так:
{
my $a=&init_value;
sub foo
{
return $a+1;
}
}
в первом случае "а" определена там где используется, а во втором
пришлось внешний блок городить... эта, как ее
клозура ;)
собственно тут дело вкуса "как красивее"
я бы не стал на твоем месте рассуждать о бедных и богатых ;)
Reply to: