[Moscow.pm] Как очистить массив

Андрей П. Ковбович akovbovich на gmail.com
Пн Май 31 04:39:22 PDT 2010


Вот что советуют в Effective Perl, 2nd edition

Item 10. Don’t assign undef when you want an empty array.

Uninitialized array variables, however, have the value (), the empty list. If
you assign undef to an array variable, what you actually get is a list of one
element containing undef. Don’t assign undef to an array variable! Since
a single-element list evaluates to true in Perl, even if that single element is
undef, you can create some hard-to-find problems in your code:

@still_going = undef;
if (@still_going) { ... }

The simplest way to avoid this is to assign the empty list () to array variables
when you want to clear them:

my @going_gone = ();

You can also use the undef function:
undef @going_gone;

Думаю, все остальные варианты - грабли, которые когда-либо могут выстрелить.

31 мая 2010 г. 15:32 пользователь Михаил Шогин <mshogin на gmail.com> написал:
>> > Это уже вопрос стиля, не более того.
>>
>> Это не стиль
>>
>> > Я всегда предпочитаю проверять через if scalar(@a). Когда-то нарывался
>> > при
>> > записи if @a, что поведение было неправильным (в реальном коде).
>>
>> Вот я не люблю таких утверждений: где-то, что-то, когда-то, но не помню.
>>
>> Либо вы пишете на языке, понимаете что пишете и понимаете что происходит.
>> Либо вообще не пишите.
>>
>> Зачем хаять синтаксис, рассказывать про злобный TIMTOWTDI, если именно
>> такое
>> вот незнание и непонимание основ порождает жуткий, слабочитаемый код?
>>
>> > Аналогично по скобкам, - вопрос стиля. Я часто предпочитаю их ставить.
>>
>> Возможно. Хотя опять-же - скорее всего банальное незнание приоритетов
>> операций
>>
>
> Смотря для кого выпишите: для себя, для машины или для людей. )))
> Так что если пишите для людей, то пишите для людей. В частности, скобочки
> придают больше информативности.
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>


Подробная информация о списке рассылки Moscow-pm