сообщение perlcritic: карта, используемая в контексте void

#perl #void #perl-critic

#perl #void #perl-критик

Вопрос:

Ниже есть строка кода Perl, из которой я получаю сообщение perlcritic :

 map { $total_ids  = scalar @{$ids->{$_}} } @brands;
 

Сообщение:

 "map" used in void context near 'map { $total_ids  = scalar @{$ids->{$_}} } @brands;'
 

Кто-нибудь может мне помочь это исправить?

Ответ №1:

map возвращает список, который в контексте void выбрасывается.

Как рекомендовано Perl::Critic::Policy::BuiltinFunctions::ProhibitVoidMap, превратите ваш map в foreach

  $total_ids  = scalar @{$ids->{$_}} foreach @brands;
 

Комментарии:

1. » map в контексте void больше не дорого. map теперь она зависит от контекста и не будет создавать список, если вызывается в контексте void. » — от perl581delta . Так что это не так с 2003 года.

2. Использование map в контексте void по-прежнему является плохой идеей. Но потому, что это запутывает ваш код, а не потому, что это имеет какие-либо фактические вредные последствия.

3. Или просто: $total_ids = @{$ids->{$_}} for @brands;